{
  "info": {
    "_postman_id": "5e4e9eb6-6213-4207-b6b5-c66122e26d07",
    "name": "Enqethni (أنقذني) API v1",
    "description": "# أنقذني · Enqethni — API v1\n\n> منصة سعودية للتبرع بالدم تربط المتبرعين بمراكز التبرع (فروع بنوك الدم): حجز المواعيد، اختبار الأهلية بالذكاء الاصطناعي، تتبع وحدة الدم حتى الاستخدام، النداءات، المخزون والاحتياج والعروض، والدعم.\n> A Saudi blood-donation platform connecting donors with blood-bank branches.\n>\n> **جماهير هذه الكولكشن (Backend واحد، DB واحدة):**\n> - **User** — تطبيق المتبرع (iOS/Android) **والموقع** — نفس الـ endpoints للاثنين ([Figma app](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev) · [Figma web](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=83-2&m=dev)).\n> - **Provider** — لوحة بنك الدم (فرونت ويب منفصل) تحت `/provider/*` ([Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1-3&m=dev)).\n> - **Shared** — قوائم ومحتوى عام بلا توكن · **Demo** — ملء بيانات تجريبية (تعمل فقط لو `DEMO_DATA_ENABLED=true`).\n> لوحة الإدارة Blade منفصلة (ليست في الكولكشن).\n\n---\n\n## ١) كيف تشغّل الكولكشن · Getting started\n\n| المتغيّر / variable | القيمة / value | ملاحظة / note |\n|---|---|---|\n| `base_url` | `http://127.0.0.1:8000/api/v1/` | لاحظ الشرطة الأخيرة — كل URL يبدأ `{{base_url}}…` |\n| `lang` | `ar` أو `en` | يُرسل في `Accept-Language` (الافتراضي ar) |\n| `user_token` | *(فارغ)* | يُحفظ تلقائياً من `auth/nafath/{id}/status` عند `completed` |\n| `employee_token` | *(فارغ)* | يُحفظ تلقائياً من `provider/auth/login` |\n| `temp-token` | *(فارغ)* | توكن مؤقت (ability `forget-password`) من `provider/auth/forgot-password/verify-code` |\n\n**كل طلب يحمل:** `Accept: application/json` + `Accept-Language: {{lang}}`. المحمي يحمل `Authorization: Bearer {{user_token}}` (أو `{{employee_token}}` للوحة البنك).\n**متغيرات المسار** تُكتب `{id}` بقوس واحد داخل الـ URL (Apidog يفهمها path param) — مُعرّفة في params كل طلب مع مصدرها. **كل الـ bodies `form-data`**؛ التعديل بالملفات = `POST` + `_method=PUT`.\n**كل flow** فيه مجلد **«✅ Helper lists & pages»** يضم كل القوائم/الصفحات/طلبات الـ demo التي يحتاجها — جرّب الـ flow بدون الخروج منه.\n\n> الأمثلة حقيقية من قاعدة بيانات مبذورة مطابقة للتصميم (المتبرع الرئيسي **محمد أحمد القحطاني** — هوية `1012345678`، O+، 12 تبرعاً؛ الحساب الرئيسي لـ KFSH **أحمد محمد العمري** `0501234567` / `password`).\n\n---\n\n## ٢) شكل الاستجابة الموحّد · The response envelope\n\n```json\n{ \"message\": \"تم جلب البيانات بنجاح\", \"data\": { } }\n```\n\nالقوائم مقسّمة إلى صفحات:\n\n```json\n{ \"message\": \"...\", \"data\": { \"data\": [ ], \"pagination\": { \"current_page\": 1, \"per_page\": 15, \"total\": 0, \"last_page\": 1, \"from\": null, \"to\": null }, \"meta\": { } } }\n```\n\n- **الـ enums** دائماً `{ value, label }`، والملوّنة منها `{ value, label, color, bg_color }` (hex من التصميم) — اربط الواجهة بـ `label`/الألوان والمنطق بـ `value`.\n- **الكيانات ذات الحالات** (حجز، تبرع، نداء، احتياج، عرض، تذكرة…) ترجع `action_buttons`: `[{key, label, method, endpoint, style, confirm, requires_reason, is_available}]` — **مجموعة ثابتة لكل شاشة**، والفرونت يعرض الزر ويعطّله حسب `is_available` (لا يستنتج من الحالة).\n\n### أكواد الحالة · Status codes\n\n| كود | المعنى | ماذا يفعل الفرونت |\n|---|---|---|\n| `200` | نجاح | — |\n| `401` | غير مُصادق / توكن منتهٍ | امسح التوكن → شاشة الدخول |\n| `403` | ممنوع: حساب محظور · موظف/فرع/جهة معطّل · قسم غير مسموح `{\"key\":\"forbidden_section\",\"data\":{\"section\":\"inventory\"}}` | اعرض الرسالة؛ للقسم: «لا تملك صلاحية» |\n| `404` | غير موجود **أو خارج نطاقك** (لا يكشف وجود سجل لغيرك) · demo معطّل | — |\n| `409` | قاعدة أعمال: حجز قائم، فترة انتظار، فترة ممتلئة، نداء غير نشط، انتقال حالة غير مسموح… | اعرض `message` كما هي (نصوص التصميم) |\n| `422` | خطأ تحقق `{message, errors{field:[...]}}` | اعرض تحت كل حقل |\n| `428` | **بيانات الحساب ناقصة** `{\"key\":\"incomplete_profile\",\"data\":{\"next_step\":\"complete_info\"}}` | وجّه للشاشة 3 «بيانات نفاذ + فصيلة الدم» |\n| `429` | تجاوز الحد `data.retry_after_seconds` | عدّاد إعادة المحاولة |\n| `503` | نفاذ غير متاح | «تعذّر الاتصال بخدمة نفاذ حالياً» |\n\n---\n\n## ٣) السايكلز · Cycles\n\n### أ) دخول/تسجيل المتبرع — نفاذ فقط (لا كلمة مرور ولا OTP منا)\n1. **الشاشة 1:** `POST auth/nafath/register` **أو** `POST auth/nafath/login` — **رقم الهوية فقط** (الجوال يأتي من نفاذ) → `{request_id, random_number, expires_in_seconds (~200), instruction, consent_text}`؛ الهوية المسجّلة في «إنشاء حساب» تدخل مباشرة والعكس. طلب قائم لنفس الهوية → **409**.\n2. **الشاشة 2:** اعرض الرقم + عدّاد ~200 ث + «تأكيد الربط» (المستخدم يختار الرقم في **تطبيق نفاذ**)، و**poll** `GET auth/nafath/{id}/status` كل 3 ثوانٍ حتى: `completed` (التوكن داخل `data.user.token`) · `rejected` · `expired` · `underage`.\n3. **الموافقة تُسجَّل تلقائياً عند الاكتمال** (لا endpoint للموافقة). حسب `next_step`: `complete_info` → **الشاشة 3** `POST auth/complete-info` (+ `city_id` لو لم يرجع نفاذ مدينة) → `null` = الرئيسية. أي طلب محمي قبل الاكتمال يرجع **428**.\n4. بعد الدخول: `POST devices` (FCM) · `POST profile/lang`.\n\n### ب) الحجز → التبرع → الاستخدام\n`GET booking/check` → `GET lookups/donation-types` → `GET lookups/donation-purposes` → `GET branches` → `GET guidelines?type=preparation` → `GET branches/{id}/available-dates` → `GET branches/{id}/slots` → (اختياري `eligibility/questions` + `POST eligibility/assessments`) → `POST appointments` (**قيد الانتظار** — البنك يؤكد) → البنك: `provider/appointments/{id}/confirm` (SMS برمز BK-) → `check-in` (يُنشئ التبرع) → `provider/donations/{id}/advance` × 7 → `record-usage` · المتبرع يتابع `GET donations` · `GET donations/{id}/tracking`.\n\n### ج) النداءات\n- **مستشفى:** `POST provider/appeals` → نشط فوراً + إشعار المتبرعين المتوافقين مرة واحدة.\n- **مستخدم:** `POST my-appeals` → قيد المراجعة → الأدمن يعتمد (يحدد الفصيلة/النوع) → نشط.\n- **الاستجابة:** `GET appeals/{id}` → `GET appeals/{id}/response-check` → `POST appointments` مع `appeal_id`؛ تُحتسب عند **تأكيد** البنك؛ عند بلوغ العدد → تم الاستيفاء.\n\n### د) لوحة البنك\n`provider/auth/login` → `provider/me` (الصلاحيات تبني الـ sidebar) → الرئيسية/المواعيد/التبرعات/النداءات/المخزون/الاحتياج/التواصل مع الإدارة/الجهة/الفروع/الموظفون. الحساب الرئيسي يرى كل فروع جهته ويختار `branch_id` في الفورمات والفلاتر.\n\n### هـ) Demo\nبتوكنك: `POST demo/user/fill` (أو `/fill/{section}`) يملأ حسابك بكل الحالات؛ `DELETE demo/user` ينظّف. للبنك: `demo/provider/*`. متبرعو الـ demo موسومون ولا يظهرون في الإحصائيات/القوائم العامة.\n",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Shared",
      "description": "قوائم ومحتوى عام — بلا توكن. يستخدمها التطبيق والموقع ولوحة البنك.",
      "item": [
        {
          "name": "Settings",
          "item": [
            {
              "name": "lookups",
              "description": "Flow `lookups` — 12 endpoints (sprint ≤ 3). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "blood-types",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                          "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/blood-types",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "blood-types"
                      ]
                    },
                    "description": "## Purpose\nقائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — English (Accept-Language: en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "donation-types",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/donation-types",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "donation-types"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nأنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — all active types",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — types offered by branch 2",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "⚠️ 422 — unknown branch_id",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "donation-purposes",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                          "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); pm.expect(o).to.have.property(\"description\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/donation-purposes",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "donation-purposes"
                      ]
                    },
                    "description": "## Purpose\nقائمة طبيعة التبرع — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U24 Select Donation Purpose — user app `760:10154`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-10154&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-10154&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user app `2251:185`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-185&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-185&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user web `2295:6712`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6712&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6712&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user web `825:10661`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10661&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10661&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\DonationPurpose` بالترتيب المعرّف في الـ enum عبر `DonationPurpose::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `description` من `lang/*/enums.php` → `donation_purpose_descriptions`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-purposes",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-purposes"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\",\n      \"tag\": \"تبرع منتظم\",\n      \"description\": \"تبرع عادي غير مرتبط بحالة طارئة\"\n    },\n    {\n      \"value\": \"life_saving\",\n      \"label\": \"إنقاذ حياة\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"tag\": \"حالة حرجة\",\n      \"description\": \"تبرع موجه لحالة تحتاج إلى متبرعين للمساعدة في إنقاذ حياة\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"tag\": \"استجابة سريعة\",\n      \"description\": \"تبرع مرتبط بحالة عاجلة تحتاج إلى استجابة سريعة\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-urgencies",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                          "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); pm.expect(o).to.have.property(\"hint\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/appeal-urgencies",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "appeal-urgencies"
                      ]
                    },
                    "description": "## Purpose\nقائمة درجات استعجال النداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P19 Create Appeal / Enter Details — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n- P10 Appeals filter — urgency — provider (web) `245:6635`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealUrgency` بالترتيب المعرّف في الـ enum عبر `AppealUrgency::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- ثلاث قيم فقط (C5): حرج/عاجل/روتيني — أي «عالي/متوسط/منخفض» في التصميم تُستبدل.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-urgencies",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-urgencies"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"hint\": \"إنقاذ حياة\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"hint\": \"خلال ساعات\"\n    },\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\",\n      \"hint\": \"حاجة مستقرة\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-relations",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                          "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/appeal-relations",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "appeal-relations"
                      ]
                    },
                    "description": "## Purpose\nقائمة صلة صاحب النداء بالمريض — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U141 Select Relationship (sheet) — user app `773:2430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2430&scaling=scale-down&content-scaling=fixed)\n- U141 Select Relationship (sheet) — user web `825:7478`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7478&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7478&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealRelation` بالترتيب المعرّف في الـ enum عبر `AppealRelation::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-relations",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-relations"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"self\",\n      \"label\": \"أنا المريض\"\n    },\n    {\n      \"value\": \"father\",\n      \"label\": \"الأب\"\n    },\n    {\n      \"value\": \"mother\",\n      \"label\": \"الأم\"\n    },\n    {\n      \"value\": \"brother\",\n      \"label\": \"الأخ\"\n    },\n    {\n      \"value\": \"sister\",\n      \"label\": \"الأخت\"\n    },\n    {\n      \"value\": \"husband\",\n      \"label\": \"الزوج\"\n    },\n    {\n      \"value\": \"wife\",\n      \"label\": \"الزوجة\"\n    },\n    {\n      \"value\": \"child\",\n      \"label\": \"الابن/الابنة\"\n    },\n    {\n      \"value\": \"relative\",\n      \"label\": \"قريب\"\n    },\n    {\n      \"value\": \"friend\",\n      \"label\": \"صديق\"\n    },\n    {\n      \"value\": \"doctor\",\n      \"label\": \"طبيب\"\n    },\n    {\n      \"value\": \"nurse\",\n      \"label\": \"ممرض/ممرضة\"\n    },\n    {\n      \"value\": \"hospital_staff\",\n      \"label\": \"موظف مستشفى\"\n    },\n    {\n      \"value\": \"health_entity\",\n      \"label\": \"ممثل جهة صحية\"\n    },\n    {\n      \"value\": \"other\",\n      \"label\": \"أخرى\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-required-times",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                          "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/appeal-required-times",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "appeal-required-times"
                      ]
                    },
                    "description": "## Purpose\nقائمة الموعد المطلوب للنداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P19 Create Appeal / Enter Details — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealRequiredTime` بالترتيب المعرّف في الـ enum عبر `AppealRequiredTime::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `specific` يجعل `required_at` إجبارياً في فورم النداء.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-required-times",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-required-times"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"today\",\n      \"label\": \"اليوم\"\n    },\n    {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    {\n      \"value\": \"specific\",\n      \"label\": \"تحديد تاريخ ووقت\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-statuses",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                          "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/appeal-statuses",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "appeal-statuses"
                      ]
                    },
                    "description": "## Purpose\nقائمة حالات النداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- P8 Appeals — status dropdown — provider (web) `245:5554`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-5554&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-5554&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealStatus` بالترتيب المعرّف في الـ enum عبر `AppealStatus::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- ملوّن: `{value,label,color,bg_color}` من `AppealStatus::color()/bg()` (analysis §4.2.1).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-statuses",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-statuses"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"under_review\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"rejected\",\n      \"label\": \"مرفوض\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    {\n      \"value\": \"paused\",\n      \"label\": \"معلق\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"fulfilled\",\n      \"label\": \"تم الاستيفاء\",\n      \"color\": \"#4B5563\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    {\n      \"value\": \"closed\",\n      \"label\": \"مغلق\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "complaint-categories",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                          "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/complaint-categories",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "complaint-categories"
                      ]
                    },
                    "description": "## Purpose\nقائمة تصنيفات الشكاوى — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U85 Select Feedback Category (sheet) — user app `1488:2885`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2885&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2885&scaling=scale-down&content-scaling=fixed)\n- U72 Submit Complaint — user app `424:6271`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6271&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6271&scaling=scale-down&content-scaling=fixed)\n- U72 Submit Complaint — user web `89:3183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\ComplaintCategory` بالترتيب المعرّف في الـ enum عبر `ComplaintCategory::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/complaint-categories",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "complaint-categories"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"technical\",\n      \"label\": \"مشكلة تقنية\"\n    },\n    {\n      \"value\": \"improvement\",\n      \"label\": \"اقتراح تحسين\"\n    },\n    {\n      \"value\": \"service\",\n      \"label\": \"شكوى خدمة\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "branches",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"district\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}lookups/branches",
                      "host": [
                        "{{base_url}}lookups"
                      ],
                      "path": [
                        "branches"
                      ],
                      "query": [
                        {
                          "key": "city_id",
                          "value": "1",
                          "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "فيصل",
                          "description": "optional · nullable|string|max:100 · بحث بالاسم",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nالفروع النشطة (المستشفيات) — مصدر `branch_id` في فورم نداء المستخدم.\n\n## Screens\n- U139 Select Hospital (sheet) — user app `773:1878`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1878&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1878&scaling=scale-down&content-scaling=fixed)\n- U139 Select Hospital (sheet) — user web `825:6826`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-6826&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-6826&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `city_id` — optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities · example: `1`\n- `donation_type_id` — optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث بالاسم · example: `فيصل`\n\n\n## Behaviour notes\n**Steps:**\n1. `Branch::active()` + جهته نشطة (`whereHas organization is_active`).\n2. فلتر اختياري `city_id`, `donation_type_id` (whereHas pivot), `search` على الاسم المترجم.\n3. يرجع `BranchLookupResource` خفيف: id, code, name (اسم الجهة — الفرع), city, district.\n4. غير مقسّم لصفحات (≤ مئات) — مرتب بالاسم.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (city_id, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — all branches",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/branches",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 8,\n      \"code\": \"BR-008\",\n      \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 47,\n        \"name\": \"العكيشية\"\n      }\n    },\n    {\n      \"id\": 9,\n      \"code\": \"BR-009\",\n      \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 38,\n        \"name\": \"الدرعية\"\n      }\n    },\n    {\n      \"id\": 5,\n      \"code\": \"BR-005\",\n      \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 2,\n        \"name\": \"السليمانية\"\n      }\n    },\n    {\n      \"id\": 6,\n      \"code\": \"BR-006\",\n      \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 38,\n        \"name\": \"الدرعية\"\n      }\n    },\n    {\n      \"id\": 7,\n      \"code\": \"BR-007\",\n      \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n      \"city\": {\n        \"id\": 2,\n        \"name\": \"جدة\"\n      },\n      \"district\": {\n        \"id\": 50,\n        \"name\": \"العسافية\"\n      }\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 1,\n        \"name\": \"العليا\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"city\": {\n        \"id\": 3,\n        \"name\": \"الدمام\"\n      },\n      \"district\": {\n        \"id\": 51,\n        \"name\": \"الشاطئ\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"city\": {\n        \"id\": 2,\n        \"name\": \"جدة\"\n      },\n      \"district\": {\n        \"id\": 12,\n        \"name\": \"الروضة\"\n      }\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — Riyadh branches offering platelets (filters)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/branches?city_id=1&donation_type_id=2",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 8,\n      \"code\": \"BR-008\",\n      \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 47,\n        \"name\": \"العكيشية\"\n      }\n    },\n    {\n      \"id\": 5,\n      \"code\": \"BR-005\",\n      \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 2,\n        \"name\": \"السليمانية\"\n      }\n    },\n    {\n      \"id\": 6,\n      \"code\": \"BR-006\",\n      \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 38,\n        \"name\": \"الدرعية\"\n      }\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 1,\n        \"name\": \"العليا\"\n      }\n    }\n  ]\n}"
                    },
                    {
                      "name": "⚠️ 422 — unknown city_id",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/branches?city_id=99999",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد المدينة غير صالح.\",\n  \"errors\": {\n    \"city_id\": [\n      \"حقل المحدد المدينة غير صالح.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "cities",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}cities",
                      "host": [
                        "{{base_url}}cities"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nقائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "city-districts",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}cities/{id}/districts",
                      "host": [
                        "{{base_url}}cities"
                      ],
                      "path": [
                        "{id}",
                        "districts"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "1",
                          "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                        }
                      ]
                    },
                    "description": "## Purpose\nأحياء مدينة — مصدر `district_id` في النداء (web) والفرع.\n\n## Screens\n- U137 Create Appeal — الحي (web) — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — district — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع أحياء المدينة النشطة (base `districts` + translations) مرتبة بالاسم.\n2. المدينة غير موجودة → 404.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | مدينة غير موجودة | `messages.not_found` | العنصر غير موجود | Not found |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — districts of Riyadh",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities/{id}/districts",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": [
                            "{id}",
                            "districts"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 3,\n      \"name\": \"الحي الدبلوماسي\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"الروضة\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"السليمانية\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"العكيشية\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"العليا\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"المربع\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"المروج\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"المروج II\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الملاذ\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الورود\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 404 — unknown city",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities/{id}/districts",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": [
                            "{id}",
                            "districts"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "badges",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"badge levels with thresholds\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"min_donations\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });",
                          "pm.test(\"five levels\", () => pm.expect(pm.response.json().data).to.have.length(5));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}badges",
                      "host": [
                        "{{base_url}}badges"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nالأوسمة الخمسة وحدودها (شاشة المتميزين).\n\n## Screens\n- U133 Distinguished Donors — user app `758:771`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&scaling=scale-down&content-scaling=fixed)\n- U133 Distinguished Donors — user web `825:8591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع أوسمة جدول `badges` (المُدارة من لوحة التحكم) مرتّبة تصاعديًا بالحد الأدنى للتبرعات، مع الاسم المترجم + تسمية المستوى + الحد الأدنى + الألوان + **أيقونة الوسام** (`image`).\n\n**Business rules / constraints:**\n- المستويات والحدود تُدار من الداشبورد (جدول `badges`: `min_donations` + رفع أيقونة لكل وسام). البذرة الافتراضية: برونزي 5 · فضي 10 · ذهبي 15 · ماسي 25 · بطل العطاء 50 (التسمية «المستوى الأول…الرابع / أعلى مستوى»).\n- الوسام يُحسب من عدد التبرعات **المكتملة** (`donations.status in completed,used`) — أعلى وسام حدُّه ≤ عدد التبرعات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}badges",
                          "host": [
                            "{{base_url}}badges"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"bronze\",\n      \"label\": \"الوسام البرونزي\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/bronze.png\",\n      \"level_label\": \"المستوى الأول\",\n      \"min_donations\": 5\n    },\n    {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\",\n      \"image\": \"http://help.test/uploads/badges/silver.png\",\n      \"level_label\": \"المستوى الثاني\",\n      \"min_donations\": 10\n    },\n    {\n      \"value\": \"gold\",\n      \"label\": \"الوسام الذهبي\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/gold.png\",\n      \"level_label\": \"المستوى الثالث\",\n      \"min_donations\": 15\n    },\n    {\n      \"value\": \"diamond\",\n      \"label\": \"الوسام الماسي\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\",\n      \"image\": \"http://help.test/uploads/badges/diamond.png\",\n      \"level_label\": \"المستوى الرابع\",\n      \"min_donations\": 25\n    },\n    {\n      \"value\": \"hero\",\n      \"label\": \"وسام بطل العطاء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"image\": \"http://help.test/uploads/badges/hero.png\",\n      \"level_label\": \"أعلى مستوى\",\n      \"min_donations\": 50\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}badges",
                          "host": [
                            "{{base_url}}badges"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"bronze\",\n      \"label\": \"Bronze badge\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/bronze.png\",\n      \"level_label\": \"Level one\",\n      \"min_donations\": 5\n    },\n    {\n      \"value\": \"silver\",\n      \"label\": \"Silver badge\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\",\n      \"image\": \"http://help.test/uploads/badges/silver.png\",\n      \"level_label\": \"Level two\",\n      \"min_donations\": 10\n    },\n    {\n      \"value\": \"gold\",\n      \"label\": \"Gold badge\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/gold.png\",\n      \"level_label\": \"Level three\",\n      \"min_donations\": 15\n    },\n    {\n      \"value\": \"diamond\",\n      \"label\": \"Diamond badge\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\",\n      \"image\": \"http://help.test/uploads/badges/diamond.png\",\n      \"level_label\": \"Level four\",\n      \"min_donations\": 25\n    },\n    {\n      \"value\": \"hero\",\n      \"label\": \"Giving hero badge\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"image\": \"http://help.test/uploads/badges/hero.png\",\n      \"level_label\": \"Top level\",\n      \"min_donations\": 50\n    }\n  ]\n}"
                    }
                  ]
                }
              ]
            },
            {
              "name": "content",
              "description": "Flow `content` — 4 endpoints (sprint 1). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "stats",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"lives_saved\"); pm.expect(o).to.have.property(\"centers\"); pm.expect(o).to.have.property(\"active_donors\"); pm.expect(o).to.have.property(\"successful_donations\"); pm.expect(o).to.have.property(\"units_yearly\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}stats",
                      "host": [
                        "{{base_url}}stats"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nأرقام المنصة العامة (الترحيب/نظرة التبرع/شريط الويب).\n\n## Screens\n- U7 Welcome — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user app `424:3791`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user web `163:4705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `2256:5170`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يقرأ مفاتيح settings: `stats_lives_saved`, `stats_centers`, `stats_active_donors`, `stats_successful_donations`, `stats_units_yearly` (يكتبها الأدمن — brief §10.1).\n2. يرجع الأرقام + نص منسّق بالأرقام العربية/اللاتينية حسب اللغة (`+٤٢٬٠٠٠`).\n3. Cache 10 دقائق (يُمسح عند حفظ الإعدادات).\n\n**Business rules / constraints:**\n- C13: مجموعة واحدة من المفاتيح للترحيب ونظرة التبرع والويب — لا أرقام مختلفة بين الشاشات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | مفتاح غير مضبوط → `value: 0` | `` |  |  |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stats",
                          "host": [
                            "{{base_url}}stats"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+٤٢٬٠٠٠\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+٨٥\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+١٢٬٠٠٠\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+٤٥٬٠٠٠\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+٩٠٬٠٠٠\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — English",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stats",
                          "host": [
                            "{{base_url}}stats"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+42,000\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+85\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+12,000\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+45,000\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+90,000\"\n    }\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "contact-info",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"address\"); pm.expect(o).to.have.property(\"working_hours\"); pm.expect(o).to.have.property(\"socials\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}contact-info",
                      "host": [
                        "{{base_url}}contact-info"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nبيانات «تواصل معنا» والفوتر.\n\n## Screens\n- U92 Contact Us — user app `486:3659`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3659&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3659&scaling=scale-down&content-scaling=fixed)\n- U92 Contact Us — user web `89:4558`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4558&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4558&scaling=scale-down&content-scaling=fixed)\n- W1 Web footer — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يقرأ مفاتيح settings الـ base للتواصل (phone, email, address, working_hours) + الروابط الاجتماعية (base `socials`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}contact-info",
                          "host": [
                            "{{base_url}}contact-info"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"phone\": \"800-124-9999\",\n    \"email\": \"support@enqethni.sa\",\n    \"address\": \"الرياض، طريق الملك فهد، برج الأعمال، الطابق الخامس، مكتب 502\",\n    \"working_hours\": \"السبت – الخميس: 8:00 ص – 4:00 م\",\n    \"socials\": [\n      {\n        \"name\": \"x\",\n        \"url\": \"https://x.com/enqethni\",\n        \"icon\": \"http://help.test/uploads/socials/http://help.test/storage/uploads/socials/twitter.png\"\n      },\n      {\n        \"name\": \"instagram\",\n        \"url\": \"https://instagram.com/enqethni\",\n        \"icon\": \"http://help.test/uploads/socials/http://help.test/storage/uploads/socials/instagram.png\"\n      },\n      {\n        \"name\": \"facebook\",\n        \"url\": \"https://facebook.com/enqethni\",\n        \"icon\": \"http://help.test/uploads/socials/http://help.test/storage/uploads/socials/facebook.png\"\n      },\n      {\n        \"name\": \"youtube\",\n        \"url\": \"https://youtube.com/@enqethni\",\n        \"icon\": \"http://help.test/uploads/socials/http://help.test/defaults/default.png\"\n      },\n      {\n        \"name\": \"linkedin\",\n        \"url\": \"https://linkedin.com/company/enqethni\",\n        \"icon\": \"http://help.test/uploads/socials/http://help.test/storage/uploads/socials/linkedin.png\"\n      },\n      {\n        \"name\": \"telegram\",\n        \"url\": \"https://t.me/enqethni\",\n        \"icon\": \"http://help.test/uploads/socials/http://help.test/defaults/default.png\"\n      }\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "page-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}pages/{slug}",
                      "host": [
                        "{{base_url}}pages"
                      ],
                      "path": [
                        "{slug}"
                      ],
                      "variable": [
                        {
                          "key": "slug",
                          "value": "terms",
                          "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                        }
                      ]
                    },
                    "description": "## Purpose\nمحتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | slug غير معروف | `messages.not_found` | العنصر غير موجود | Not found |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — terms",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"terms\",\n    \"title\": \"الشروط والأحكام\",\n    \"content\": \"باستخدامك منصة أنقذني فإنك توافق على الشروط التالية:\\n1. يجب أن يكون عمر المستخدم 18 سنة فأكثر وأن يكون مواطناً أو مقيماً نظامياً.\\n2. تتحقق المنصة من هويتك عبر خدمة نفاذ، وتلتزم بصحة البيانات المقدمة.\\n3. حجز موعد التبرع لا يعني قبوله حتى يؤكده المركز.\\n4. يلتزم المتبرع بفترة الانتظار بين التبرعات حسب نوع التبرع.\\n5. يحق للمركز رفض التبرع لأسباب طبية دون إبداء تفاصيل إضافية.\\n6. النداءات الطارئة تخضع لمراجعة الإدارة قبل نشرها.\\n7. يُمنع إساءة استخدام المنصة أو نشر معلومات غير صحيحة.\\n8. يحق للمنصة إيقاف أي حساب يخالف هذه الشروط.\\n9. التبرع تطوعي ولا يترتب عليه أي مقابل مادي.\\n10. قد تُحدَّث هذه الشروط وسيتم إشعارك بأي تغيير جوهري.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — privacy",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"privacy\",\n    \"title\": \"سياسة الخصوصية\",\n    \"content\": \"نلتزم في أنقذني بحماية بياناتك الشخصية:\\n1. نجمع الاسم وتاريخ الميلاد والمدينة من نفاذ بعد موافقتك.\\n2. نحفظ فصيلة الدم وسجل التبرعات لتقديم الخدمة.\\n3. نشارك بياناتك الضرورية مع المركز الذي تحجز فيه فقط.\\n4. لا نعرض اسمك في قوائم المتبرعين إلا بموافقتك.\\n5. تُرسل الإشعارات إلى جهازك وفق إعداداتك ويمكنك إيقافها.\\n6. تُحفظ بيانات التحقق في أنظمة مشفرة.\\n7. لا نبيع بياناتك لأي طرف.\\n8. يمكنك حذف حسابك في أي وقت.\\n9. للاستفسار تواصل معنا عبر support@enqethni.sa.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — about",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"about\",\n    \"title\": \"من نحن\",\n    \"content\": \"أنقذني منصة وطنية سعودية تهدف إلى تسهيل التبرع بالدم وربط المتبرعين بالمستشفيات وبنوك الدم في جميع أنحاء المملكة: حجز مواعيد التبرع، النداءات الطارئة، اختبار الأهلية، وتتبع وحدة الدم حتى وصولها للمريض.\\n\\nمهمتنا: ضمان توفر الدم الآمن لكل مريض يحتاجه في الوقت المناسب. رؤيتنا: أن نكون المنصة الأولى للتبرع بالدم في المملكة والمنطقة. أهدافنا: إنقاذ الأرواح، تمكين المتبرعين، الابتكار الصحي، والثقة والأمان.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — donation-terms",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — unknown slug",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "onboarding",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"image\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}onboarding",
                      "host": [
                        "{{base_url}}onboarding"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nشرائح الـ onboarding الثلاث.\n\n## Screens\n- U4 Onboarding 1 — user app `424:11868`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11868&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11868&scaling=scale-down&content-scaling=fixed)\n- U5 Onboarding 2 — user app `424:11914`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11914&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11914&scaling=scale-down&content-scaling=fixed)\n- U6 Onboarding 3 — user app `424:11960`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11960&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11960&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع 3 شرائح `intro_pages` مرتبة (العنوان، الوصف، الصورة).\n2. تبديل اللغة في الشاشة = إعادة الطلب بـ `Accept-Language` المختار (زائر — لا حفظ).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}onboarding",
                          "host": [
                            "{{base_url}}onboarding"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"title\": \"ابدأ رحلة العطاء\",\n      \"description\": \"انضم إلى آلاف المتبرعين وساهم في توفير الدم الآمن لكل مريض.\",\n      \"image\": \"http://help.test/uploads/intro_pages/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"title\": \"احجز موعدك بسهولة\",\n      \"description\": \"اختر المركز والنوع والوقت المناسب لك في خطوات بسيطة.\",\n      \"image\": \"http://help.test/uploads/intro_pages/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"title\": \"كن سببًا في إنقاذ حياة\",\n      \"description\": \"تتبّع وحدة دمك واعرف متى تصل إلى مريض يحتاجها.\",\n      \"image\": \"http://help.test/uploads/intro_pages/3.png\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `content` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "pages/terms",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «الشروط والأحكام» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"terms\",\n    \"title\": \"الشروط والأحكام\",\n    \"content\": \"باستخدامك منصة أنقذني فإنك توافق على الشروط التالية:\\n1. يجب أن يكون عمر المستخدم 18 سنة فأكثر وأن يكون مواطناً أو مقيماً نظامياً.\\n2. تتحقق المنصة من هويتك عبر خدمة نفاذ، وتلتزم بصحة البيانات المقدمة.\\n3. حجز موعد التبرع لا يعني قبوله حتى يؤكده المركز.\\n4. يلتزم المتبرع بفترة الانتظار بين التبرعات حسب نوع التبرع.\\n5. يحق للمركز رفض التبرع لأسباب طبية دون إبداء تفاصيل إضافية.\\n6. النداءات الطارئة تخضع لمراجعة الإدارة قبل نشرها.\\n7. يُمنع إساءة استخدام المنصة أو نشر معلومات غير صحيحة.\\n8. يحق للمنصة إيقاف أي حساب يخالف هذه الشروط.\\n9. التبرع تطوعي ولا يترتب عليه أي مقابل مادي.\\n10. قد تُحدَّث هذه الشروط وسيتم إشعارك بأي تغيير جوهري.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — donation-terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/privacy",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "privacy",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «سياسة الخصوصية» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — privacy",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"privacy\",\n    \"title\": \"سياسة الخصوصية\",\n    \"content\": \"نلتزم في أنقذني بحماية بياناتك الشخصية:\\n1. نجمع الاسم وتاريخ الميلاد والمدينة من نفاذ بعد موافقتك.\\n2. نحفظ فصيلة الدم وسجل التبرعات لتقديم الخدمة.\\n3. نشارك بياناتك الضرورية مع المركز الذي تحجز فيه فقط.\\n4. لا نعرض اسمك في قوائم المتبرعين إلا بموافقتك.\\n5. تُرسل الإشعارات إلى جهازك وفق إعداداتك ويمكنك إيقافها.\\n6. تُحفظ بيانات التحقق في أنظمة مشفرة.\\n7. لا نبيع بياناتك لأي طرف.\\n8. يمكنك حذف حسابك في أي وقت.\\n9. للاستفسار تواصل معنا عبر support@enqethni.sa.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/about",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "about",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «من نحن» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — about",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"about\",\n    \"title\": \"من نحن\",\n    \"content\": \"أنقذني منصة وطنية سعودية تهدف إلى تسهيل التبرع بالدم وربط المتبرعين بالمستشفيات وبنوك الدم في جميع أنحاء المملكة: حجز مواعيد التبرع، النداءات الطارئة، اختبار الأهلية، وتتبع وحدة الدم حتى وصولها للمريض.\\n\\nمهمتنا: ضمان توفر الدم الآمن لكل مريض يحتاجه في الوقت المناسب. رؤيتنا: أن نكون المنصة الأولى للتبرع بالدم في المملكة والمنطقة. أهدافنا: إنقاذ الأرواح، تمكين المتبرعين، الابتكار الصحي، والثقة والأمان.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/donation-terms",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "donation-terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «شروط وتعليمات التبرع» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — donation-terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "User",
      "description": "تطبيق المتبرع + الموقع (نفس الـ API). Bearer `{{user_token}}`.",
      "item": [
        {
          "name": "Auth",
          "item": [
            {
              "name": "nafath",
              "item": [
                {
                  "name": "nafath-register",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"request id\", () => { const d = pm.response.json().data; pm.expect(d.request_id).to.be.a(\"number\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"request_id\"); pm.expect(o).to.have.property(\"transaction_id\"); pm.expect(o).to.have.property(\"random_number\"); pm.expect(o).to.have.property(\"purpose\"); pm.expect(o).to.have.property(\"expires_at\"); pm.expect(o).to.have.property(\"expires_in_seconds\"); pm.expect(o).to.have.property(\"instruction\"); pm.expect(o).to.have.property(\"consent_text\"); });",
                          "{ const v = pm.response.json().data.request_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"nafath_register_request_id\", v); pm.environment.set(\"nafath_register_request_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}auth/nafath/register",
                      "host": [
                        "{{base_url}}auth"
                      ],
                      "path": [
                        "nafath",
                        "register"
                      ]
                    },
                    "description": "## Purpose\nالشاشة 1: بدء التسجيل عبر نفاذ برقم الهوية فقط؛ يرجع الرقم العشوائي الذي يختاره المستخدم في تطبيق نفاذ ومهلة ~200 ثانية.\n\n## Screens\n- U8 Create Account — user app `424:12080`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12080&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12080&scaling=scale-down&content-scaling=fixed)\n- U8 Create Account — user web `486:5112`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-5112&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-5112&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: `throttle:nafath` (5/min per IP + national_id)\n\n## Parameters & fields\n### Body (form-data)\n- `national_id` — required · required|digits:10|regex:/^[12]\\d{9}$/ · رقم الهوية/الإقامة · example: `1012345678`\n\n\n## Behaviour notes\n**Steps:**\n1. يتحقق من الهوية (`^[12]\\d{9}$`) ثم يبحث عن مستخدم بنفس `national_id` (يشمل المحذوف soft — المحذوف يُعامل كجديد بعد الاستعادة؟ **لا**: الحساب المحذوف لا يُستعاد؛ يُنشأ حساب جديد ويُربط الهوية به).\n2. لو الهوية **مسجّلة** → يحوّل الغرض إلى `login` بصمت (نفس الاستجابة — «يدخل مباشرة»).\n3. يستدعي مزوّد نفاذ عبر `App\\Contracts\\NafathClient` (driver حقيقي / `fake` في local + tests) → `transaction_id` + `random_number` (رقمان) + مهلة.\n4. يُنشئ صف `nafath_requests` (status=`waiting`, purpose, ip, expires_at = now + مهلة نفاذ) ويرجع `request_id` للـ polling.\n5. لا OTP ولا كلمة مرور منا — نفاذ وحده (brief §3.1).\n\n**Business rules / constraints:**\n- **المدخل الوحيد هو `national_id`** - لا `country_code` ولا `phone`: الجوال يأتي من نفاذ عند الاكتمال (والمفتاح `966`).\n- **طلب واحد نشط لكل هوية** (قيد نفاذ نفسه): ما دام لهوية طلب `waiting` لم تنتهِ مهلته (~200 ث، `NAFATH_TTL_SECONDS`) فالبدء مجدداً = **409** `auth.nafath_request_active`؛ بعد الانتهاء/الاكتمال يُسمح بطلب جديد ويُنهى القديم (`expired`).\n- مهلة المعاملة **~200 ثانية** (`expires_in_seconds` + `expires_at`)؛ بعدها يرجع الـ polling `expired`.\n- نفاذ يرجع **رقماً عشوائياً + حالة فقط** (لا نسبة تقدم ولا خطوات فرعية) - الشاشة 2 تعرض الرقم + عدّاد فقط.\n- نفاذ غير متاح → 503 برسالة `auth.nafath_unavailable` (لا يُنشأ صف).\n\n**Status / state transitions:** `nafath_requests.status`: — → `waiting` (`NafathStatus`).\n\n**Multi-step flow (3 شاشات فقط):** الشاشة **1** (هذا: رقم الهوية) → الشاشة **2** `GET auth/nafath/{id}/status` (رقم عشوائي + عدّاد ~200 ث + «تأكيد الربط»، polling كل ~3 ث حتى `completed|rejected|expired|failed|underage`؛ **الموافقة تُسجَّل تلقائياً عند الاكتمال**) → الشاشة **3** `POST auth/complete-info` (بيانات نفاذ للقراءة + فصيلة الدم [+ المدينة لو لم يرجعها نفاذ]) حسب `next_step`.\n\n**Side effects (Laravel-first):**\n- HTTP call to Nafath (timeout 10s, `report()` on failure) — not queued (the user waits for the number).\n\n**Edge cases & failure conditions:**\n- هوية مستخدم محظور → يبدأ الطلب عادياً؛ الحظر يُرجع عند الاكتمال (`account_blocked`) حتى لا نكشف حالة الحساب قبل التحقق.\n- العمر < 18 يُكتشف عند الاكتمال من تاريخ ميلاد نفاذ (`underage`)؛ لو لم يُرجع نفاذ تاريخ ميلاد لا يمكن الفحص فيمضي الطلب.\n\n> Postman: saves `{{nafath_register_request_id}}` (NOT `nafath_request_id`): polling a register transaction would replace the run donor token with an incomplete new donor. nafath-status polls the login transaction; to poll a register one, copy its id into `nafath_request_id`.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.nafath_started` → ar «افتح تطبيق نفاذ واختر الرقم» / en \"Open the Nafath app and choose the number\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (national_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | لهذه الهوية طلب نفاذ قائم لم تنتهِ مهلته (طلب واحد نشط لكل هوية). من نفس الجهاز: `data` = الطلب القائم (يكمل الشاشة 2)؛ من جهاز آخر: `data.retry_after_seconds` | `auth.nafath_request_active` | لديك طلب تحقق قائم في نفاذ، أكمله أو انتظر انتهاء مهلته | You already have a pending Nafath request, finish it or wait for it to expire |\n| 503 | خدمة نفاذ غير متاحة | `auth.nafath_unavailable` | تعذّر الاتصال بخدمة نفاذ حالياً، حاول لاحقاً | Nafath is unavailable right now, try later |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "national_id",
                          "value": "1098765431",
                          "type": "text",
                          "description": "required · required|digits:10|regex:/^[12]\\d{9}$/ · رقم الهوية/الإقامة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — new national id (purpose=register)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/register",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "register"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1098765431",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"افتح تطبيق نفاذ واختر الرقم\",\n  \"data\": {\n    \"request_id\": 260,\n    \"transaction_id\": \"391b0eb3-6270-4600-9925-625310633cf0\",\n    \"random_number\": \"14\",\n    \"purpose\": {\n      \"value\": \"register\",\n      \"label\": \"تسجيل\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — already registered id 1012345678 (silently purpose=login)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/register",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "register"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1012345678",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"افتح تطبيق نفاذ واختر الرقم\",\n  \"data\": {\n    \"request_id\": 261,\n    \"transaction_id\": \"132f8e22-40ed-4086-a0f0-ba03402b2a95\",\n    \"random_number\": \"60\",\n    \"purpose\": {\n      \"value\": \"login\",\n      \"label\": \"دخول\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — national_id «3012345678»",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/register",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "register"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "3012345678",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"صيغة حقل رقم الهوية غير صالحة.\",\n  \"errors\": {\n    \"national_id\": [\n      \"صيغة حقل رقم الهوية غير صالحة.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — a live transaction already exists for this id (same device: the request comes back)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/register",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "register"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1098765431",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لديك طلب تحقق قائم في نفاذ، أكمله أو انتظر انتهاء مهلته\",\n  \"key\": \"nafath_request_active\",\n  \"data\": {\n    \"request_id\": 260,\n    \"transaction_id\": \"391b0eb3-6270-4600-9925-625310633cf0\",\n    \"random_number\": \"14\",\n    \"purpose\": {\n      \"value\": \"register\",\n      \"label\": \"تسجيل\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                    },
                    {
                      "name": "❌ 503 — nafath down (fake driver NAFATH_FAKE_FAIL=true)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/register",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "register"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1011111111",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Service Unavailable",
                      "code": 503,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تعذّر الاتصال بخدمة نفاذ حالياً، حاول لاحقاً\"\n}"
                    },
                    {
                      "name": "❌ 429 — too many requests (6th call within a minute)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/register",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "register"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1066666661",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "nafath-login",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"request id\", () => { const d = pm.response.json().data; pm.expect(d.request_id).to.be.a(\"number\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"request_id\"); pm.expect(o).to.have.property(\"transaction_id\"); pm.expect(o).to.have.property(\"random_number\"); pm.expect(o).to.have.property(\"purpose\"); pm.expect(o).to.have.property(\"expires_at\"); pm.expect(o).to.have.property(\"expires_in_seconds\"); pm.expect(o).to.have.property(\"instruction\"); pm.expect(o).to.have.property(\"consent_text\"); });",
                          "{ const v = pm.response.json().data.request_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"nafath_request_id\", v); pm.environment.set(\"nafath_request_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}auth/nafath/login",
                      "host": [
                        "{{base_url}}auth"
                      ],
                      "path": [
                        "nafath",
                        "login"
                      ]
                    },
                    "description": "## Purpose\nالشاشة 1: بدء الدخول عبر نفاذ برقم الهوية فقط (هوية غير مسجلة → يكمل التسجيل تلقائياً).\n\n## Screens\n- U10 Sign In «مرحباً بعودتك» — user app `424:12289`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12289&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12289&scaling=scale-down&content-scaling=fixed)\n- U10 Sign In «مرحباً بعودتك» — user web `486:7441`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-7441&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-7441&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: `throttle:nafath` (5/min per IP + national_id)\n\n## Parameters & fields\n### Body (form-data)\n- `national_id` — required · required|digits:10|regex:/^[12]\\d{9}$/ · رقم الهوية · example: `1012345678`\n\n\n## Behaviour notes\n**Steps:**\n1. يتحقق من الهوية (`^[12]\\d{9}$`) ثم يبحث عن مستخدم بنفس `national_id` (يشمل المحذوف soft — المحذوف يُعامل كجديد بعد الاستعادة؟ **لا**: الحساب المحذوف لا يُستعاد؛ يُنشأ حساب جديد ويُربط الهوية به).\n2. لو الهوية **غير مسجّلة** → يحوّل الغرض إلى `register` بصمت (بعد نفاذ يكمل التسجيل تلقائياً: `next_step=complete_info`).\n3. يستدعي مزوّد نفاذ عبر `App\\Contracts\\NafathClient` (driver حقيقي / `fake` في local + tests) → `transaction_id` + `random_number` (رقمان) + مهلة.\n4. يُنشئ صف `nafath_requests` (status=`waiting`, purpose, ip, expires_at = now + مهلة نفاذ) ويرجع `request_id` للـ polling.\n5. لا OTP ولا كلمة مرور منا — نفاذ وحده (brief §3.1).\n\n**Business rules / constraints:**\n- **المدخل الوحيد هو `national_id`** - لا `country_code` ولا `phone`: الجوال يأتي من نفاذ عند الاكتمال (والمفتاح `966`).\n- **طلب واحد نشط لكل هوية** (قيد نفاذ نفسه): ما دام لهوية طلب `waiting` لم تنتهِ مهلته (~200 ث، `NAFATH_TTL_SECONDS`) فالبدء مجدداً = **409** `auth.nafath_request_active`؛ بعد الانتهاء/الاكتمال يُسمح بطلب جديد ويُنهى القديم (`expired`).\n- مهلة المعاملة **~200 ثانية** (`expires_in_seconds` + `expires_at`)؛ بعدها يرجع الـ polling `expired`.\n- نفاذ يرجع **رقماً عشوائياً + حالة فقط** (لا نسبة تقدم ولا خطوات فرعية) - الشاشة 2 تعرض الرقم + عدّاد فقط.\n- نفاذ غير متاح → 503 برسالة `auth.nafath_unavailable` (لا يُنشأ صف).\n\n**Status / state transitions:** `nafath_requests.status`: — → `waiting` (`NafathStatus`).\n\n**Multi-step flow (3 شاشات فقط):** الشاشة **1** (هذا: رقم الهوية) → الشاشة **2** `GET auth/nafath/{id}/status` (رقم عشوائي + عدّاد ~200 ث + «تأكيد الربط»، polling كل ~3 ث حتى `completed|rejected|expired|failed|underage`؛ **الموافقة تُسجَّل تلقائياً عند الاكتمال**) → الشاشة **3** `POST auth/complete-info` (بيانات نفاذ للقراءة + فصيلة الدم [+ المدينة لو لم يرجعها نفاذ]) حسب `next_step`.\n\n**Side effects (Laravel-first):**\n- HTTP call to Nafath (timeout 10s, `report()` on failure) — not queued (the user waits for the number).\n\n**Edge cases & failure conditions:**\n- هوية مستخدم محظور → يبدأ الطلب عادياً؛ الحظر يُرجع عند الاكتمال (`account_blocked`) حتى لا نكشف حالة الحساب قبل التحقق.\n- العمر < 18 يُكتشف عند الاكتمال من تاريخ ميلاد نفاذ (`underage`)؛ لو لم يُرجع نفاذ تاريخ ميلاد لا يمكن الفحص فيمضي الطلب.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.nafath_started` → ar «افتح تطبيق نفاذ واختر الرقم» / en \"Open the Nafath app and choose the number\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (national_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | لهذه الهوية طلب نفاذ قائم لم تنتهِ مهلته (طلب واحد نشط لكل هوية). من نفس الجهاز: `data` = الطلب القائم (يكمل الشاشة 2)؛ من جهاز آخر: `data.retry_after_seconds` | `auth.nafath_request_active` | لديك طلب تحقق قائم في نفاذ، أكمله أو انتظر انتهاء مهلته | You already have a pending Nafath request, finish it or wait for it to expire |\n| 503 | خدمة نفاذ غير متاحة | `auth.nafath_unavailable` | تعذّر الاتصال بخدمة نفاذ حالياً، حاول لاحقاً | Nafath is unavailable right now, try later |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "national_id",
                          "value": "1012345678",
                          "type": "text",
                          "description": "required · required|digits:10|regex:/^[12]\\d{9}$/ · رقم الهوية"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — registered id (purpose=login)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/login",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1012345678",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"افتح تطبيق نفاذ واختر الرقم\",\n  \"data\": {\n    \"request_id\": 263,\n    \"transaction_id\": \"c33d65c4-6ee2-4934-85b9-d50015dd10e4\",\n    \"random_number\": \"81\",\n    \"purpose\": {\n      \"value\": \"login\",\n      \"label\": \"دخول\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — unknown id (silently purpose=register)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/login",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1034567891",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"افتح تطبيق نفاذ واختر الرقم\",\n  \"data\": {\n    \"request_id\": 264,\n    \"transaction_id\": \"77e6734d-fe97-4b2f-9951-20e940f70901\",\n    \"random_number\": \"86\",\n    \"purpose\": {\n      \"value\": \"register\",\n      \"label\": \"تسجيل\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — national_id «123»",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/login",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "123",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن يحتوي حقل رقم الهوية على 10 رقمًا/أرقام. (and 1 more error)\",\n  \"errors\": {\n    \"national_id\": [\n      \"يجب أن يحتوي حقل رقم الهوية على 10 رقمًا/أرقام.\",\n      \"صيغة حقل رقم الهوية غير صالحة.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — a live transaction already exists for this id (same device: the request comes back)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/login",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1012345678",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لديك طلب تحقق قائم في نفاذ، أكمله أو انتظر انتهاء مهلته\",\n  \"key\": \"nafath_request_active\",\n  \"data\": {\n    \"request_id\": 263,\n    \"transaction_id\": \"c33d65c4-6ee2-4934-85b9-d50015dd10e4\",\n    \"random_number\": \"81\",\n    \"purpose\": {\n      \"value\": \"login\",\n      \"label\": \"دخول\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                    },
                    {
                      "name": "❌ 503 — nafath down (fake driver NAFATH_FAKE_FAIL=true)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/login",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1022222221",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Service Unavailable",
                      "code": 503,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تعذّر الاتصال بخدمة نفاذ حالياً، حاول لاحقاً\"\n}"
                    },
                    {
                      "name": "❌ 429 — too many requests (6th call within a minute)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/login",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1055555551",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "nafath-status",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "const d = pm.response.json().data;",
                          "if (d.token) pm.test(\"completed = the user itself, flat (token, next_step, missing_fields; no status / user)\", () => { pm.expect(d).to.have.property(\"next_step\"); pm.expect(d.missing_fields).to.be.an(\"array\"); pm.expect(d).to.not.have.property(\"status\"); pm.expect(d).to.not.have.property(\"user\"); });",
                          "else pm.test(\"any other outcome carries the status\", () => pm.expect(d.status).to.have.property(\"value\"));",
                          "if (d.status && d.status.value === \"waiting\") pm.test(\"waiting carries the countdown\", () => pm.expect(d.expires_in_seconds).to.be.a(\"number\"));",
                          "{ const d = pm.response.json().data; if (d.token) { pm.collectionVariables.set(\"user_token\", d.token); pm.environment.set(\"user_token\", d.token); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}auth/nafath/{id}/status",
                      "host": [
                        "{{base_url}}auth"
                      ],
                      "path": [
                        "nafath",
                        "{id}",
                        "status"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{nafath_request_id}}",
                          "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                        }
                      ]
                    },
                    "description": "## Purpose\nالشاشة 2: الـ polling على طلب نفاذ — عند الاكتمال تُسجَّل الموافقة ويرجع المستخدم والتوكن والخطوة التالية (الشاشة 3).\n\n## Screens\n- 2 شاشة الرقم العشوائي + العدّاد + «تأكيد الربط» (repurposed «In Progress v03» - بلا شريط تقدم) — user app `1488:2157`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2157&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2157&scaling=scale-down&content-scaling=fixed)\n- 2 نفس الشاشة (web: «In Progress» المعاد توظيفه) — user web `1490:4955`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-4955&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-4955&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: `throttle:nafath-poll` (30/min per request id — a named limiter in `AppServiceProvider`; the client polls every ~3s = ~20/min)\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id · example: `41`\n\n\n## Behaviour notes\n**Steps:**\n1. يحمّل `nafath_requests` بالـ id؛ لو `waiting` يسأل مزوّد نفاذ عن الحالة (أو ينتظر callback الذي حدّث الصف).\n2. `waiting` → يرجع `status=waiting` + `expires_in_seconds` (الفرونت يكمل الـ polling).\n3. `rejected` / `expired` / `failed` → يرجع الحالة + الرسالة؛ الفرونت يعرض «إعادة المحاولة» (يبدأ طلب جديد).\n4. `completed` → داخل transaction واحدة: ينشئ/يحدّث `User` من بيانات نفاذ **بما رجع فقط** (الجوال **من نفاذ** وهو الوحيد الإلزامي؛ `name`، `birth_date`، `gender`، `city_id` = مطابقة اسم مدينة نفاذ مع `cities` — تُحفظ لو رجعت، وإلا تبقى فارغة/الاسم الافتراضي «مستخدم نفاذ») + `nafath_verified_at` + **`consent_accepted_at` و`terms_accepted_at`** (المستخدم ضغط «تأكيد الربط» = موافقته على ربط بياناته، ويبقى العمودان السجل القانوني) + يُصدر التوكن.\n5. العمر < 18 من `birth_date` (إن رجع) → لا يُنشأ مستخدم، `status=underage` (`auth.underage`).\n6. مستخدم `is_blocked` → 403 `auth.account_blocked` (لا توكن).\n7. لم يرجع نفاذ جوالاً (ولا للمستخدم جوال) → `status=failed` (`failure_reason=phone_missing`).\n8. يرجع **بيانات المستخدم نفسها مباشرة في `data`** (`UserResource` مسطّح — بلا `status` ولا كائن `user`) **والتوكن داخلها** + `next_step`: `complete_info` لو الفصيلة **أو المدينة** فارغة، وإلا `null` + `missing_fields` (الناقص من `image` / `blood_type` / `city_id` — حقول الشاشة 3). **لا يوجد `consent`.** باقي الحالات فقط ترجع `{status, expires_in_seconds?}` — الفرونت يميّز الاكتمال بوجود `data.token`.\n9. الصف يُغلق (`completed_at`) — الـ polling بعدها على نفس id يرجع 404 (توكن يُصدر مرة واحدة).\n\n**Business rules / constraints:**\n- `is_complete_info` = blood_type ∧ city (الموافقة سُجّلت عند الاكتمال).\n- **الجوال من نفاذ** (لا يُرسل من العميل) - لا `phone_changed` بعد الآن.\n- **المهلة ~200 ث**: `expires_in_seconds` يُرجع مع `waiting`؛ بعد انتهائها يرجع `expired` (الشاشة تعرض «إعادة المحاولة» = بدء طلب جديد).\n- **طلب واحد نشط لكل هوية**: البدء مجدداً قبل انتهاء المهلة = 409 على `auth/nafath/register|login` (راجع خطتيهما).\n- **لا تفترض أي حقل**: الشاشة 3 تعرض name / city / birth_date إن كانت في `user` وتخفيها إن كانت `null`؛ المدينة الفارغة = حقل اختيار المدينة على الشاشة 3.\n\n**Fake driver (dev) — `NAFATH_APP_ID` empty:** the outcome of an **unregistered** national id is decided by its last digit:\n\n| Last digit | Outcome | Example national id |\n|---|---|---|\n| 9 | `rejected` | `1000000009` |\n| 8 | `expired` | `1000000008` |\n| 7 | `failed` (`nafath_error`) | `1000000007` |\n| 6 | `waiting` (keeps waiting) | `1000000006` |\n| 5 | completed but under 18 → `underage` | `1000000005` |\n| 0–4 | `completed` (new donor, `next_step=complete_info`) | `1000000001` |\n| second-to-last digit 9 | completed **without a city** (simulates \"Nafath returned no city\" → screen 3 asks for `city_id`) | `1000000091` |\n\n- A completed fake transaction returns a **realistic random profile**: Arabic full name (matching the gender), birth date (19–60 years) and a city drawn from the seeded active cities; `NAFATH_FAKE_NO_CITY=true` forces \"no city\" for every id.\n- An id that **already belongs to a donor ALWAYS completes**, whatever its last digit: the seeded main donor `1012345678` ends in 8 yet completes because it is registered — \"expired (id ending 8)\" only holds for an unregistered id.\n- `phone_taken`: a new id whose Nafath phone (`55` + digits 3–9 of the id) already belongs to another donor → `status=failed` (`failure_reason=phone_taken`), e.g. `1012345670` (its phone `551234567` is the seeded donor `1012345678`'s).\n- `NAFATH_FAKE_FAIL=true` → the start endpoints answer 503.\n\n**Status / state transitions:** `nafath_requests.status`: `waiting` → `completed | rejected | expired | failed` (+ computed `underage`).\n\n**Multi-step flow (3 شاشات):** الشاشة 1 `POST auth/nafath/register|login` ← **الشاشة 2 (هذا)** ← الشاشة 3 `POST auth/complete-info` (لو `next_step=complete_info`). لا خطوة موافقة منفصلة.\n\n**Side effects (Laravel-first):**\n- User created/updated (Observer generates nothing — `donor_code` is an accessor `DNR-<id 5>`).\n- Sanctum token created (`user_token`).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.nafath_completed` → ar «تم التحقق من هويتك بنجاح» / en \"Your identity has been verified\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | `status=waiting` | `auth.nafath_waiting` | جارٍ التحقق من الهوية | Verifying your identity |\n| 200 | `status=rejected` | `auth.nafath_rejected` | تم رفض طلب التحقق من تطبيق نفاذ | The verification request was rejected in Nafath |\n| 200 | `status=expired` (انتهت مهلة ~200 ث) | `auth.nafath_expired` | انتهت مهلة طلب التحقق، حاول مرة أخرى | The verification request expired, try again |\n| 200 | `status=failed` (Nafath error, fake digit 7) | `auth.nafath_failed` | تعذّر التحقق من الهوية، حاول مرة أخرى | We could not verify your identity, try again |\n| 200 | `status=failed` + Nafath returned no phone (`phone_missing`) | `auth.nafath_failed` | تعذّر التحقق من الهوية، حاول مرة أخرى | We could not verify your identity, try again |\n| 200 | `status=failed` + the Nafath phone belongs to another donor (`phone_taken`) | `auth.nafath_failed` | تعذّر التحقق من الهوية، حاول مرة أخرى | We could not verify your identity, try again |\n| 200 | `status=underage` | `auth.underage` | عذراً، التسجيل متاح لمن أتم 18 سنة فأكثر | Sorry, registration requires age 18 or above |\n| 403 | المستخدم محظور | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n| 404 | id غير موجود / مكتمل سابقاً / من جهاز آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — completed (new user, Nafath city matched, next_step=complete_info)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم التحقق من هويتك بنجاح\",\n  \"data\": {\n    \"id\": 239,\n    \"name\": \"محمد صالح الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******30\",\n    \"country_code\": \"966\",\n    \"phone\": \"559876543\",\n    \"donor_code\": \"DNR-00239\",\n    \"blood_type\": null,\n    \"city\": {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    \"birth_date\": \"1978-02-02\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": false,\n    \"next_step\": \"complete_info\",\n    \"missing_fields\": [\n      \"image\",\n      \"blood_type\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — completed (Nafath returned no city: city=null, next_step=complete_info)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم التحقق من هويتك بنجاح\",\n  \"data\": {\n    \"id\": 240,\n    \"name\": \"عبدالله إبراهيم الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******91\",\n    \"country_code\": \"966\",\n    \"phone\": \"550000009\",\n    \"donor_code\": \"DNR-00240\",\n    \"blood_type\": null,\n    \"city\": null,\n    \"birth_date\": \"1995-09-16\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": false,\n    \"next_step\": \"complete_info\",\n    \"missing_fields\": [\n      \"image\",\n      \"blood_type\",\n      \"city_id\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — completed (registered donor, next_step=null)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم التحقق من هويتك بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — waiting (id ending 6 on the fake driver)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"جارٍ التحقق من الهوية\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"waiting\",\n      \"label\": \"بانتظار التأكيد\"\n    },\n    \"expires_in_seconds\": 199\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — rejected in the Nafath app (id ending 9)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم رفض طلب التحقق من تطبيق نفاذ\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"rejected\",\n      \"label\": \"مرفوض\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — expired (unregistered id ending 8; a registered id always completes)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"انتهت مهلة طلب التحقق، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"expired\",\n      \"label\": \"منتهي\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — underage (id ending 5)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"عذراً، التسجيل متاح لمن أتم 18 سنة فأكثر\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"underage\",\n      \"label\": \"أقل من 18 سنة\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — failed (id ending 7 on the fake driver)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تعذّر التحقق من الهوية، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"failed\",\n      \"label\": \"فشل\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — failed (phone_taken: the Nafath phone belongs to another donor)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تعذّر التحقق من الهوية، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"failed\",\n      \"label\": \"فشل\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — expired (the ~200 s window ended before Nafath answered)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"انتهت مهلة طلب التحقق، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"expired\",\n      \"label\": \"منتهي\"\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — already completed (token is issued once)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 403 — blocked account (after verification)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    },
                    {
                      "name": "❌ 404 — unknown request id",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 429 — too many polls (31st call within a minute, limit 30 per request id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 59\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "item": [
                    {
                      "name": "pages/terms",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «الشروط والأحكام» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"terms\",\n    \"title\": \"الشروط والأحكام\",\n    \"content\": \"باستخدامك منصة أنقذني فإنك توافق على الشروط التالية:\\n1. يجب أن يكون عمر المستخدم 18 سنة فأكثر وأن يكون مواطناً أو مقيماً نظامياً.\\n2. تتحقق المنصة من هويتك عبر خدمة نفاذ، وتلتزم بصحة البيانات المقدمة.\\n3. حجز موعد التبرع لا يعني قبوله حتى يؤكده المركز.\\n4. يلتزم المتبرع بفترة الانتظار بين التبرعات حسب نوع التبرع.\\n5. يحق للمركز رفض التبرع لأسباب طبية دون إبداء تفاصيل إضافية.\\n6. النداءات الطارئة تخضع لمراجعة الإدارة قبل نشرها.\\n7. يُمنع إساءة استخدام المنصة أو نشر معلومات غير صحيحة.\\n8. يحق للمنصة إيقاف أي حساب يخالف هذه الشروط.\\n9. التبرع تطوعي ولا يترتب عليه أي مقابل مادي.\\n10. قد تُحدَّث هذه الشروط وسيتم إشعارك بأي تغيير جوهري.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — donation-terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/privacy",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "privacy",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «سياسة الخصوصية» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — privacy",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"privacy\",\n    \"title\": \"سياسة الخصوصية\",\n    \"content\": \"نلتزم في أنقذني بحماية بياناتك الشخصية:\\n1. نجمع الاسم وتاريخ الميلاد والمدينة من نفاذ بعد موافقتك.\\n2. نحفظ فصيلة الدم وسجل التبرعات لتقديم الخدمة.\\n3. نشارك بياناتك الضرورية مع المركز الذي تحجز فيه فقط.\\n4. لا نعرض اسمك في قوائم المتبرعين إلا بموافقتك.\\n5. تُرسل الإشعارات إلى جهازك وفق إعداداتك ويمكنك إيقافها.\\n6. تُحفظ بيانات التحقق في أنظمة مشفرة.\\n7. لا نبيع بياناتك لأي طرف.\\n8. يمكنك حذف حسابك في أي وقت.\\n9. للاستفسار تواصل معنا عبر support@enqethni.sa.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "onboarding",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"image\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}onboarding",
                          "host": [
                            "{{base_url}}onboarding"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر شرائح البداية — شرائح الـ onboarding الثلاث.\n\n## Screens\n- U4 Onboarding 1 — user app `424:11868`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11868&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11868&scaling=scale-down&content-scaling=fixed)\n- U5 Onboarding 2 — user app `424:11914`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11914&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11914&scaling=scale-down&content-scaling=fixed)\n- U6 Onboarding 3 — user app `424:11960`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11960&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11960&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع 3 شرائح `intro_pages` مرتبة (العنوان، الوصف، الصورة).\n2. تبديل اللغة في الشاشة = إعادة الطلب بـ `Accept-Language` المختار (زائر — لا حفظ).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}onboarding",
                              "host": [
                                "{{base_url}}onboarding"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"title\": \"ابدأ رحلة العطاء\",\n      \"description\": \"انضم إلى آلاف المتبرعين وساهم في توفير الدم الآمن لكل مريض.\",\n      \"image\": \"http://help.test/uploads/intro_pages/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"title\": \"احجز موعدك بسهولة\",\n      \"description\": \"اختر المركز والنوع والوقت المناسب لك في خطوات بسيطة.\",\n      \"image\": \"http://help.test/uploads/intro_pages/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"title\": \"كن سببًا في إنقاذ حياة\",\n      \"description\": \"تتبّع وحدة دمك واعرف متى تصل إلى مريض يحتاجها.\",\n      \"image\": \"http://help.test/uploads/intro_pages/3.png\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "stats",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"lives_saved\"); pm.expect(o).to.have.property(\"centers\"); pm.expect(o).to.have.property(\"active_donors\"); pm.expect(o).to.have.property(\"successful_donations\"); pm.expect(o).to.have.property(\"units_yearly\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stats",
                          "host": [
                            "{{base_url}}stats"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر أرقام شاشة الترحيب — أرقام المنصة العامة (الترحيب/نظرة التبرع/شريط الويب).\n\n## Screens\n- U7 Welcome — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user app `424:3791`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user web `163:4705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `2256:5170`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يقرأ مفاتيح settings: `stats_lives_saved`, `stats_centers`, `stats_active_donors`, `stats_successful_donations`, `stats_units_yearly` (يكتبها الأدمن — brief §10.1).\n2. يرجع الأرقام + نص منسّق بالأرقام العربية/اللاتينية حسب اللغة (`+٤٢٬٠٠٠`).\n3. Cache 10 دقائق (يُمسح عند حفظ الإعدادات).\n\n**Business rules / constraints:**\n- C13: مجموعة واحدة من المفاتيح للترحيب ونظرة التبرع والويب — لا أرقام مختلفة بين الشاشات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | مفتاح غير مضبوط → `value: 0` | `` |  |  |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stats",
                              "host": [
                                "{{base_url}}stats"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+٤٢٬٠٠٠\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+٨٥\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+١٢٬٠٠٠\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+٤٥٬٠٠٠\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+٩٠٬٠٠٠\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — English",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stats",
                              "host": [
                                "{{base_url}}stats"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+42,000\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+85\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+12,000\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+45,000\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+90,000\"\n    }\n  }\n}"
                        }
                      ]
                    }
                  ],
                  "description": "كل ما يحتاجه flow `nafath` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>»."
                }
              ],
              "description": "Flow `nafath` — 3 endpoints (sprint 1). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests."
            },
            {
              "name": "complete",
              "item": [
                {
                  "name": "complete-info",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"national_id_masked\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"donor_code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"birth_date\"); pm.expect(o).to.have.property(\"gender\"); pm.expect(o).to.have.property(\"completed_donations_count\"); pm.expect(o).to.have.property(\"badge\"); pm.expect(o).to.have.property(\"active_status_text\"); pm.expect(o).to.have.property(\"next_eligible_at\"); pm.expect(o).to.have.property(\"next_eligible_text\"); pm.expect(o).to.have.property(\"days_until_eligible\"); pm.expect(o).to.have.property(\"can_donate\"); pm.expect(o).to.have.property(\"permanently_deferred\"); pm.expect(o).to.have.property(\"nafath_verified\"); pm.expect(o).to.have.property(\"is_notify\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"show_in_donor_lists\"); pm.expect(o).to.have.property(\"is_complete_info\"); pm.expect(o).to.have.property(\"next_step\"); pm.expect(o).to.have.property(\"missing_fields\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}auth/complete-info",
                      "host": [
                        "{{base_url}}auth"
                      ],
                      "path": [
                        "complete-info"
                      ]
                    },
                    "description": "## Purpose\nالشاشة 3: إنهاء التسجيل بما ينقص المتبرع فقط (`missing_fields`: الصورة اختيارية، الفصيلة والمدينة إجباريتان لو ناقصتان).\n\n## Screens\n- 3 Account Setup / Blood Type (بيانات نفاذ للقراءة + الفصيلة) — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- 3 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- G-01 اختيار المدينة عند عدم رجوع مدينة من نفاذ (حقل شرطي على الشاشة 3) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor` (`EnsureDonorAccess`: the token must belong to a donor, a blocked donor gets 403)\n\n## Parameters & fields\n### Body (form-data)\n- `blood_type` — required_if users.blood_type is null (missing_fields) · required_if_missing|nullable|Rule::enum(BloodType::class) · فصيلة الدم (8) — لا تُستبدل لو موجودة · source: GET {{base_url}}lookups/blood-types · example: `O+`\n- `city_id` — required_if users.city_id is null · required_without_existing_city|nullable|integer|exists:cities,id (whereNull deleted_at, is_active) · المدينة (تظهر فقط لو لم يرجع نفاذ مدينة مطابقة؛ وإلا تُعرض للقراءة ولا تُرسل) · source: GET {{base_url}}cities · example: `1`\n- `image` — optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة الشخصية (تظهر لو `image` ضمن `missing_fields`؛ لا تمنع اكتمال الحساب) · example: `(file)`\n\n\n## Behaviour notes\n**Steps:**\n1. لا يشترط موافقة سابقة: الموافقة سُجّلت تلقائياً عند اكتمال نفاذ (الشاشة 2)، فلا 428 هنا.\n2. يحفظ الناقص فقط (`missing_fields`): `blood_type` **فقط لو** `users.blood_type` فارغ، و`city_id` **فقط لو** `users.city_id` فارغ (إجباريان حينها — gap G-01: نفاذ لم يرجع مدينة نستطيع مطابقتها)؛ القيمة الموجودة (من نفاذ أو سابقاً) **لا تُستبدل أبداً** حتى لو أُرسلت (الشاشة تعرضها للقراءة ولا يُرسل الحقل). `image` اختياري دائماً: إرساله يحفظ/يستبدل الصورة (موديل `FILES`)، وغيابه لا يمنع اكتمال الحساب.\n3. يضبط `is_complete_info=true` → `next_step=null` (لو بقي شيء ناقص يبقى `complete_info`).\n4. يرجع `UserResource` + رسالة «تم إنشاء حسابك بنجاح».\n\n**Screen 3 contract:** الاسم / المدينة / تاريخ الميلاد تُقرأ من `data` (استجابة `nafath/{id}/status` عند الاكتمال أو `GET me`) **للقراءة فقط** وكل منها قد يكون `null` (لا تفترض وجوده)؛ إن كانت `city = null` اعرض اختيار المدينة (`GET cities`) وأرسل `city_id`.\n\n**`missing_fields`** (في `data` لاستجابة `nafath/{id}/status` عند الاكتمال، و`GET me`، ورد `complete-info`): مصفوفة بمفاتيح الـ body الناقصة من `image` / `blood_type` / `city_id` — اعرض حقول الشاشة 3 الموجودة فيها فقط. `blood_type` و`city_id` إجباريان لو ظهرا فيها، و`image` اختياري (لا يمنع اكتمال الحساب). قيمة موجودة عند المتبرع لا تُستبدل حتى لو أُرسلت.\n\n**Status / state transitions:** `users.is_complete_info`: false → true.\n\n**Multi-step flow (3 شاشات):** الشاشة 1 `auth/nafath/register|login` ← الشاشة 2 `auth/nafath/{id}/status` ← **الشاشة 3 (هذا، الأخيرة)**.\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: send only the keys listed in `missing_fields` (from `nafath/{id}/status` or `GET me`). The `city_id` row is DISABLED by default - enable it when `city_id` is missing (Nafath returned no city we could match, gap G-01); `image` is optional (enable the file row to upload one). A value the donor already has is kept even if one is posted.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.account_created` → ar «تم إنشاء حسابك بنجاح» / en \"Your account has been created\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (blood_type, city_id, image) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "blood_type",
                          "value": "O+",
                          "type": "text",
                          "description": "required_if users.blood_type is null (missing_fields) · required_if_missing|nullable|Rule::enum(BloodType::class) · فصيلة الدم (8) — لا تُستبدل لو موجودة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "type": "text",
                          "description": "required_if users.city_id is null · required_without_existing_city|nullable|integer|exists:cities,id (whereNull deleted_at, is_active) · المدينة (تظهر فقط لو لم يرجع نفاذ مدينة مطابقة؛ وإلا تُعرض للقراءة ولا تُرسل) · source: GET {{base_url}}cities",
                          "disabled": true
                        },
                        {
                          "key": "image",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة الشخصية (تظهر لو `image` ضمن `missing_fields`؛ لا تمنع اكتمال الحساب)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — O+ (city came from Nafath: shown read-only, not sent)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/complete-info",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "complete-info"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء حسابك بنجاح\",\n  \"data\": {\n    \"id\": 239,\n    \"name\": \"محمد صالح الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******30\",\n    \"country_code\": \"966\",\n    \"phone\": \"559876543\",\n    \"donor_code\": \"DNR-00239\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    \"birth_date\": \"1978-02-02\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — A- + city_id (Nafath returned no city)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/complete-info",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "complete-info"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "A-",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء حسابك بنجاح\",\n  \"data\": {\n    \"id\": 240,\n    \"name\": \"عبدالله إبراهيم الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******91\",\n    \"country_code\": \"966\",\n    \"phone\": \"550000009\",\n    \"donor_code\": \"DNR-00240\",\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-09-16\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — city_id posted but the donor already has a city (kept)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/complete-info",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "complete-info"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "B+",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء حسابك بنجاح\",\n  \"data\": {\n    \"id\": 239,\n    \"name\": \"محمد صالح الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******30\",\n    \"country_code\": \"966\",\n    \"phone\": \"559876543\",\n    \"donor_code\": \"DNR-00239\",\n    \"blood_type\": {\n      \"value\": \"B+\",\n      \"label\": \"B+\"\n    },\n    \"city\": {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    \"birth_date\": \"1978-02-02\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — blood_type «X»",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/complete-info",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "complete-info"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "X",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"القيمة المحددة في فصيلة الدم غير صالحة.\",\n  \"errors\": {\n    \"blood_type\": [\n      \"القيمة المحددة في فصيلة الدم غير صالحة.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — city_id required (Nafath returned no city)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/complete-info",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "complete-info"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل المدينة مطلوب.\",\n  \"errors\": {\n    \"city_id\": [\n      \"الحقل المدينة مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/complete-info",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "complete-info"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/complete-info",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "complete-info"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "item": [
                    {
                      "name": "pages/terms",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «الشروط والأحكام» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"terms\",\n    \"title\": \"الشروط والأحكام\",\n    \"content\": \"باستخدامك منصة أنقذني فإنك توافق على الشروط التالية:\\n1. يجب أن يكون عمر المستخدم 18 سنة فأكثر وأن يكون مواطناً أو مقيماً نظامياً.\\n2. تتحقق المنصة من هويتك عبر خدمة نفاذ، وتلتزم بصحة البيانات المقدمة.\\n3. حجز موعد التبرع لا يعني قبوله حتى يؤكده المركز.\\n4. يلتزم المتبرع بفترة الانتظار بين التبرعات حسب نوع التبرع.\\n5. يحق للمركز رفض التبرع لأسباب طبية دون إبداء تفاصيل إضافية.\\n6. النداءات الطارئة تخضع لمراجعة الإدارة قبل نشرها.\\n7. يُمنع إساءة استخدام المنصة أو نشر معلومات غير صحيحة.\\n8. يحق للمنصة إيقاف أي حساب يخالف هذه الشروط.\\n9. التبرع تطوعي ولا يترتب عليه أي مقابل مادي.\\n10. قد تُحدَّث هذه الشروط وسيتم إشعارك بأي تغيير جوهري.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — donation-terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/privacy",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "privacy",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «سياسة الخصوصية» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — privacy",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"privacy\",\n    \"title\": \"سياسة الخصوصية\",\n    \"content\": \"نلتزم في أنقذني بحماية بياناتك الشخصية:\\n1. نجمع الاسم وتاريخ الميلاد والمدينة من نفاذ بعد موافقتك.\\n2. نحفظ فصيلة الدم وسجل التبرعات لتقديم الخدمة.\\n3. نشارك بياناتك الضرورية مع المركز الذي تحجز فيه فقط.\\n4. لا نعرض اسمك في قوائم المتبرعين إلا بموافقتك.\\n5. تُرسل الإشعارات إلى جهازك وفق إعداداتك ويمكنك إيقافها.\\n6. تُحفظ بيانات التحقق في أنظمة مشفرة.\\n7. لا نبيع بياناتك لأي طرف.\\n8. يمكنك حذف حسابك في أي وقت.\\n9. للاستفسار تواصل معنا عبر support@enqethni.sa.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    }
                  ],
                  "description": "كل ما يحتاجه flow `complete` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>»."
                }
              ],
              "description": "Flow `complete` — 1 endpoints (sprint 1). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests."
            },
            {
              "name": "session",
              "item": [
                {
                  "name": "me",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"national_id_masked\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"donor_code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"birth_date\"); pm.expect(o).to.have.property(\"gender\"); pm.expect(o).to.have.property(\"completed_donations_count\"); pm.expect(o).to.have.property(\"badge\"); pm.expect(o).to.have.property(\"active_status_text\"); pm.expect(o).to.have.property(\"next_eligible_at\"); pm.expect(o).to.have.property(\"next_eligible_text\"); pm.expect(o).to.have.property(\"days_until_eligible\"); pm.expect(o).to.have.property(\"can_donate\"); pm.expect(o).to.have.property(\"permanently_deferred\"); pm.expect(o).to.have.property(\"nafath_verified\"); pm.expect(o).to.have.property(\"is_notify\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"show_in_donor_lists\"); pm.expect(o).to.have.property(\"is_complete_info\"); pm.expect(o).to.have.property(\"next_step\"); pm.expect(o).to.have.property(\"missing_fields\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}me",
                      "host": [
                        "{{base_url}}me"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nبيانات المستخدم الحالي + الخطوة الناقصة (Splash/More/قائمة الويب).\n\n## Screens\n- U3 Splash — user app `424:11844`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11844&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11844&scaling=scale-down&content-scaling=fixed)\n- U75 More — user app `424:12688`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12688&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12688&scaling=scale-down&content-scaling=fixed)\n- U75 More — user web `89:1500`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1500&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1500&scaling=scale-down&content-scaling=fixed)\n- W8 Account Menu (web dropdown) — user web `915:3816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=915-3816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=915-3816&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor` (`EnsureDonorAccess`: the token must belong to a donor, a blocked donor gets 403)\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع `UserResource` للمستخدم الحالي (بدون توكن جديد).\n2. **مستثنى من `complete.info`** — يرجع `next_step` (`complete_info` أو `null`؛ لا `consent`) بدل 428 حتى يوجّه الـ Splash للشاشة 3 الناقصة. (إطار U17 `1488:2403` «تم استكمال بياناتك» أُلغي كشاشة مستقلة ودُمج في الشاشة 3.)\n\n**Business rules / constraints:**\n- `national_id` يرجع مقنّعاً فقط (`10******78`).\n- `completed_donations_count` = تبرعات بحالة completed/used.\n- `next_eligible_at` = آخر تبرع مكتمل + `waiting_days` لنوعه، أو `deferred_until` لو أبعد؛ `permanently_deferred` → null + `can_donate=false`.\n- web header: `name` + «فصيلة دم: O+».\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — main donor",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}me",
                          "host": [
                            "{{base_url}}me"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — incomplete profile (next_step=complete_info)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}me",
                          "host": [
                            "{{base_url}}me"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 240,\n    \"name\": \"عبدالله إبراهيم الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******91\",\n    \"country_code\": \"966\",\n    \"phone\": \"550000009\",\n    \"donor_code\": \"DNR-00240\",\n    \"blood_type\": null,\n    \"city\": null,\n    \"birth_date\": \"1995-09-16\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": false,\n    \"next_step\": \"complete_info\",\n    \"missing_fields\": [\n      \"image\",\n      \"blood_type\",\n      \"city_id\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}me",
                          "host": [
                            "{{base_url}}me"
                          ],
                          "path": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — donor blocked from the admin panel (cannot be produced from this folder)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}me",
                          "host": [
                            "{{base_url}}me"
                          ],
                          "path": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "logout",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\" }; const form = (o) => ({ mode: \"formdata\", formdata: Object.keys(o).map((k) => ({ key: k, value: String(o[k]) })) }); const digits = (n) => String(Math.floor(Math.random() * Math.pow(10, n))).padStart(n, \"0\"); const nid = \"10\" + digits(7) + \"1\"; pm.sendRequest({ url: base + \"auth/nafath/register\", method: \"POST\", header: h, body: form({ national_id: nid }) }, (e1, r1) => { if (e1) return; pm.sendRequest({ url: base + \"auth/nafath/\" + r1.json().data.request_id + \"/status\", method: \"GET\", header: h }, (e2, r2) => { const d = r2.json().data; if (d && d.token) pm.variables.set(\"user_token\", d.token); if (d && d.token) pm.sendRequest({ url: base + \"devices\", method: \"POST\", header: { Accept: \"application/json\", Authorization: \"Bearer \" + d.token }, body: form({ device_id: \"a1b2c3d4-iphone15\", device_type: \"android\", fcm_token: \"postman-fcm-token\" }) }, () => {}); }); });",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));",
                          "pm.variables.unset(\"user_token\");"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}logout",
                      "host": [
                        "{{base_url}}logout"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nإنهاء الجلسة على هذا الجهاز.\n\n## Screens\n- U91 Sign Out / Confirmation «هل أنت متأكد؟» — user app `424:6784`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6784&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6784&scaling=scale-down&content-scaling=fixed)\n- U91 Sign Out / Confirmation «هل أنت متأكد؟» — user web `89:6250`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-6250&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-6250&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor` (`EnsureDonorAccess`: the token must belong to a donor, a blocked donor gets 403)\n\n## Parameters & fields\n### Body (form-data)\n- `device_id` — optional · nullable|string|max:191 · معرّف الجهاز المسجّل في `POST devices` · source: POST {{base_url}}devices · example: `a1b2c3d4-iphone15`\n\n\n## Behaviour notes\n**Steps:**\n1. يحذف التوكن الحالي (`currentAccessToken()->delete()`).\n2. لو `device_id` أُرسل يحذف صف `device_tokens` لهذا الجهاز (لا push بعد الخروج).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: runs on a throw-away donor (the pre-request registers one, with a device) so the run token stays alive and nothing it does is kept.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.logged_out` → ar «تم تسجيل الخروج» / en \"Logged out\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "device_id",
                          "value": "a1b2c3d4-iphone15",
                          "type": "text",
                          "description": "optional · nullable|string|max:191 · معرّف الجهاز المسجّل في `POST devices` · source: POST {{base_url}}devices"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — logged out (device removed too)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}logout",
                          "host": [
                            "{{base_url}}logout"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "a1b2c3d4-iphone15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تسجيل الخروج\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}logout",
                          "host": [
                            "{{base_url}}logout"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}logout",
                          "host": [
                            "{{base_url}}logout"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "a1b2c3d4-iphone15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "delete-account",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\" }; const form = (o) => ({ mode: \"formdata\", formdata: Object.keys(o).map((k) => ({ key: k, value: String(o[k]) })) }); const digits = (n) => String(Math.floor(Math.random() * Math.pow(10, n))).padStart(n, \"0\"); const nid = \"10\" + digits(7) + \"1\"; pm.sendRequest({ url: base + \"auth/nafath/register\", method: \"POST\", header: h, body: form({ national_id: nid }) }, (e1, r1) => { if (e1) return; pm.sendRequest({ url: base + \"auth/nafath/\" + r1.json().data.request_id + \"/status\", method: \"GET\", header: h }, (e2, r2) => { const d = r2.json().data; if (d && d.token) pm.variables.set(\"user_token\", d.token);  }); });",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));",
                          "pm.variables.unset(\"user_token\");"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}account",
                      "host": [
                        "{{base_url}}account"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nحذف الحساب (soft) مع إلغاء الحجوزات وإغلاق النداءات.\n\n## Screens\n- U89 Delete Account / Warning — user app `424:6710`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6710&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6710&scaling=scale-down&content-scaling=fixed)\n- U89 Delete Account / Warning — user web `89:5625`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-5625&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-5625&scaling=scale-down&content-scaling=fixed)\n- U90 Delete Account / Final «اكتب \"حذف\"» — user app `424:6753`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6753&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6753&scaling=scale-down&content-scaling=fixed)\n- U90 Delete Account / Final «اكتب \"حذف\"» — user web `439:2416`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=439-2416&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=439-2416&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor` (`EnsureDonorAccess`: the token must belong to a donor, a blocked donor gets 403)\n\n## Parameters & fields\n### Body (form-data)\n- `confirmation` — required · required|string|in:حذف,delete · حقل «اكتب \"حذف\"» — الزر يتفعّل عند المطابقة · example: `حذف`\n\n\n## Behaviour notes\n**Steps:**\n1. يتحقق `confirmation` = «حذف» (أو \"delete\" للإنجليزية).\n2. داخل transaction: يلغي حجوزاته القائمة (pending/confirmed → `cancelled`, `cancel_source=account_deleted`) ويحرر السعة.\n3. يغلق نداءاته المفتوحة (under_review/active/paused/fulfilled → `closed`, reason «حذف الحساب»).\n4. يحذف كل التوكنات + `device_tokens`، ثم `SoftDeletes` للمستخدم.\n5. سجلاته (تبرعات/نداءات) تبقى؛ الـ resources تعرض الاسم + `is_deleted_account=true` (gap U-03).\n\n**Business rules / constraints:**\n- التبرعات الجارية في البنك **لا تُلغى** (الوحدة موجودة فعلاً).\n\n**Status / state transitions:** appointments → `cancelled` (`CancelSource::ACCOUNT_DELETED`) · appeals → `closed` · users → soft-deleted.\n\n**Side effects (Laravel-first):**\n- `AppointmentCancelled` event per booking → employees notified (`provider_booking_cancelled`) + appeal counters re-evaluated.\n- `AppealClosed` event → `provider_appeal_closed` to branch employees.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `provider_booking_cancelled` | موظفو قسم appointments بالفرع | تحديث على موعد / Booking update | تم تغيير حالة الحجز :code إلى ملغي بطلب المتبرع | appointment_id | P20 |\n| `provider_appeal_closed` | موظفو قسم appeals بالفرع | إغلاق نداء | تم إغلاق النداء :code — :reason | appeal_id | P6 |\n\n> Postman: runs on a throw-away donor (the pre-request registers one) so the run token stays alive. The route is `DELETE`, sent as POST + `_method=DELETE`.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.account_deleted` → ar «تم حذف الحساب» / en \"Account deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | النص لا يطابق «حذف» | `auth.delete_confirmation_mismatch` | اكتب \"حذف\" للتأكيد | Type \"delete\" to confirm |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n\n> الـ route هو `DELETE {{base_url}}account`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=DELETE` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "DELETE",
                          "type": "text",
                          "description": "required · method spoofing - the route is DELETE, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "confirmation",
                          "value": "حذف",
                          "type": "text",
                          "description": "required · required|string|in:حذف,delete · حقل «اكتب \"حذف\"» — الزر يتفعّل عند المطابقة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — deleted (bookings cancelled, appeals closed)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}account",
                          "host": [
                            "{{base_url}}account"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "DELETE",
                              "type": "text"
                            },
                            {
                              "key": "confirmation",
                              "value": "حذف",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الحساب\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "⚠️ 422 — confirmation «x»",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}account",
                          "host": [
                            "{{base_url}}account"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "DELETE",
                              "type": "text"
                            },
                            {
                              "key": "confirmation",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"اكتب \\\"حذف\\\" للتأكيد\",\n  \"errors\": {\n    \"confirmation\": [\n      \"اكتب \\\"حذف\\\" للتأكيد\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}account",
                          "host": [
                            "{{base_url}}account"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "DELETE",
                              "type": "text"
                            },
                            {
                              "key": "confirmation",
                              "value": "حذف",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}account",
                          "host": [
                            "{{base_url}}account"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "DELETE",
                              "type": "text"
                            },
                            {
                              "key": "confirmation",
                              "value": "حذف",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "item": [
                    {
                      "name": "pages/terms",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «الشروط والأحكام» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"terms\",\n    \"title\": \"الشروط والأحكام\",\n    \"content\": \"باستخدامك منصة أنقذني فإنك توافق على الشروط التالية:\\n1. يجب أن يكون عمر المستخدم 18 سنة فأكثر وأن يكون مواطناً أو مقيماً نظامياً.\\n2. تتحقق المنصة من هويتك عبر خدمة نفاذ، وتلتزم بصحة البيانات المقدمة.\\n3. حجز موعد التبرع لا يعني قبوله حتى يؤكده المركز.\\n4. يلتزم المتبرع بفترة الانتظار بين التبرعات حسب نوع التبرع.\\n5. يحق للمركز رفض التبرع لأسباب طبية دون إبداء تفاصيل إضافية.\\n6. النداءات الطارئة تخضع لمراجعة الإدارة قبل نشرها.\\n7. يُمنع إساءة استخدام المنصة أو نشر معلومات غير صحيحة.\\n8. يحق للمنصة إيقاف أي حساب يخالف هذه الشروط.\\n9. التبرع تطوعي ولا يترتب عليه أي مقابل مادي.\\n10. قد تُحدَّث هذه الشروط وسيتم إشعارك بأي تغيير جوهري.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — donation-terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/privacy",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "privacy",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «سياسة الخصوصية» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — privacy",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"privacy\",\n    \"title\": \"سياسة الخصوصية\",\n    \"content\": \"نلتزم في أنقذني بحماية بياناتك الشخصية:\\n1. نجمع الاسم وتاريخ الميلاد والمدينة من نفاذ بعد موافقتك.\\n2. نحفظ فصيلة الدم وسجل التبرعات لتقديم الخدمة.\\n3. نشارك بياناتك الضرورية مع المركز الذي تحجز فيه فقط.\\n4. لا نعرض اسمك في قوائم المتبرعين إلا بموافقتك.\\n5. تُرسل الإشعارات إلى جهازك وفق إعداداتك ويمكنك إيقافها.\\n6. تُحفظ بيانات التحقق في أنظمة مشفرة.\\n7. لا نبيع بياناتك لأي طرف.\\n8. يمكنك حذف حسابك في أي وقت.\\n9. للاستفسار تواصل معنا عبر support@enqethni.sa.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    }
                  ],
                  "description": "كل ما يحتاجه flow `session` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>»."
                }
              ],
              "description": "Flow `session` — 3 endpoints (sprint 1). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests."
            },
            {
              "name": "profile",
              "item": [
                {
                  "name": "profile",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"national_id_masked\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"donor_code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"birth_date\"); pm.expect(o).to.have.property(\"gender\"); pm.expect(o).to.have.property(\"completed_donations_count\"); pm.expect(o).to.have.property(\"badge\"); pm.expect(o).to.have.property(\"active_status_text\"); pm.expect(o).to.have.property(\"next_eligible_at\"); pm.expect(o).to.have.property(\"next_eligible_text\"); pm.expect(o).to.have.property(\"days_until_eligible\"); pm.expect(o).to.have.property(\"can_donate\"); pm.expect(o).to.have.property(\"permanently_deferred\"); pm.expect(o).to.have.property(\"nafath_verified\"); pm.expect(o).to.have.property(\"is_notify\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"show_in_donor_lists\"); pm.expect(o).to.have.property(\"is_complete_info\"); pm.expect(o).to.have.property(\"next_step\"); pm.expect(o).to.have.property(\"missing_fields\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}profile",
                      "host": [
                        "{{base_url}}profile"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nبيانات شاشة الملف الشخصي.\n\n## Screens\n- U69 Profile — user app `424:3148`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3148&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3148&scaling=scale-down&content-scaling=fixed)\n- U69 Profile — user web `89:1774`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1774&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1774&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع `UserResource` (نفس شكل `me` و`complete-info`): الاسم، الصورة، المدينة، الفصيلة، عدد التبرعات المكتملة، الوسام، تاريخ ونص الأهلية القادم، `show_in_donor_lists`، `missing_fields`، وأزرار `action_buttons` الثابتة.\n2. `action_buttons` الشاشة الثابتة: حجز موعد (معطّل لو لا يستطيع الحجز + السبب)، سجل التبرعات، تعديل الملف.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — main donor",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — blocked account",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    },
                    {
                      "name": "❌ 428 — profile incomplete",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "update-profile",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"national_id_masked\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"donor_code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"birth_date\"); pm.expect(o).to.have.property(\"gender\"); pm.expect(o).to.have.property(\"completed_donations_count\"); pm.expect(o).to.have.property(\"badge\"); pm.expect(o).to.have.property(\"active_status_text\"); pm.expect(o).to.have.property(\"next_eligible_at\"); pm.expect(o).to.have.property(\"next_eligible_text\"); pm.expect(o).to.have.property(\"days_until_eligible\"); pm.expect(o).to.have.property(\"can_donate\"); pm.expect(o).to.have.property(\"permanently_deferred\"); pm.expect(o).to.have.property(\"nafath_verified\"); pm.expect(o).to.have.property(\"is_notify\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"show_in_donor_lists\"); pm.expect(o).to.have.property(\"is_complete_info\"); pm.expect(o).to.have.property(\"next_step\"); pm.expect(o).to.have.property(\"missing_fields\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}profile",
                      "host": [
                        "{{base_url}}profile"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nحفظ الصورة والفصيلة والمدينة وإعداد الظهور في القوائم.\n\n## Screens\n- U70 Edit Profile — user app `424:6056`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6056&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6056&scaling=scale-down&content-scaling=fixed)\n- U70 Edit Profile — user web `89:2031`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2031&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2031&scaling=scale-down&content-scaling=fixed)\n- G-U04 toggle «إظهار اسمي في قوائم المتبرعين» (gap U-04) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- U83 toast نجاح (بقايا شاشة — نص U70) — user app `486:3539`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3539&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3539&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Body (form-data)\n- `blood_type` — required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types · example: `O+`\n- `city_id` — required · required|integer|exists:cities,id (whereNull deleted_at) · المدينة · source: GET {{base_url}}cities · example: `1`\n- `show_in_donor_lists` — required · required|boolean (1/0) · إظهار اسمي في قوائم المتبرعين · example: `1`\n- `image` — optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة الشخصية · example: `(file)`\n\n\n## Behaviour notes\n**Steps:**\n1. الاسم **للقراءة فقط** (من نفاذ) — لا يُقبل في الطلب.\n2. يحدّث `blood_type`, `city_id`, `show_in_donor_lists` من `$request->validated()`.\n3. الصورة `image` اختيارية عبر `FILES` في الموديل — إرسالها يستبدل القديمة (ويحذف الملف السابق)، وعدم إرسالها يُبقي الحالية.\n4. تغيير الفصيلة لا يغيّر التبرعات السابقة (snapshot في `donations.blood_type`).\n5. يرجع `UserResource` — نفس شكل `GET profile` / `me` (`image` = رابط كامل، و`defaults/default.png` إن لم تُرفع صورة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/profile.updated` → ar «تم حفظ التغييرات بنجاح» / en \"Changes saved\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (blood_type, city_id, show_in_donor_lists, image) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "blood_type",
                          "value": "O+",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|integer|exists:cities,id (whereNull deleted_at) · المدينة · source: GET {{base_url}}cities"
                        },
                        {
                          "key": "show_in_donor_lists",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean (1/0) · إظهار اسمي في قوائم المتبرعين"
                        },
                        {
                          "key": "image",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة الشخصية"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — saved",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "show_in_donor_lists",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ التغييرات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — empty body",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل فصيلة الدم مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"blood_type\": [\n      \"الحقل فصيلة الدم مطلوب.\"\n    ],\n    \"city_id\": [\n      \"الحقل المدينة مطلوب.\"\n    ],\n    \"show_in_donor_lists\": [\n      \"الحقل الظهور في قوائم المتبرعين مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "show_in_donor_lists",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — profile incomplete",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "show_in_donor_lists",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O+",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "show_in_donor_lists",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "lang",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"national_id_masked\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"donor_code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"birth_date\"); pm.expect(o).to.have.property(\"gender\"); pm.expect(o).to.have.property(\"completed_donations_count\"); pm.expect(o).to.have.property(\"badge\"); pm.expect(o).to.have.property(\"active_status_text\"); pm.expect(o).to.have.property(\"next_eligible_at\"); pm.expect(o).to.have.property(\"next_eligible_text\"); pm.expect(o).to.have.property(\"days_until_eligible\"); pm.expect(o).to.have.property(\"can_donate\"); pm.expect(o).to.have.property(\"permanently_deferred\"); pm.expect(o).to.have.property(\"nafath_verified\"); pm.expect(o).to.have.property(\"is_notify\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"show_in_donor_lists\"); pm.expect(o).to.have.property(\"is_complete_info\"); pm.expect(o).to.have.property(\"next_step\"); pm.expect(o).to.have.property(\"missing_fields\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}profile/lang",
                      "host": [
                        "{{base_url}}profile"
                      ],
                      "path": [
                        "lang"
                      ]
                    },
                    "description": "## Purpose\nحفظ لغة المستخدم (للإشعارات وللواجهة).\n\n## Screens\n- U84 Language Settings — user app `1485:103`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1485-103&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1485-103&scaling=scale-down&content-scaling=fixed)\n- U84 Language Settings — user web `1490:8174`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-8174&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-8174&scaling=scale-down&content-scaling=fixed)\n- W7 Header ع/EN (web, logged-in) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Body (form-data)\n- `lang` — required · required|Rule::enum(Lang::class) (ar,en) · اللغة · example: `en`\n\n\n## Behaviour notes\n**Steps:**\n1. يحدّث `users.lang` + `device_tokens.lang` لكل أجهزته (الإشعارات تُرسل بلغة المستلم).\n2. الزائر لا يستدعي هذا — يكتفي بـ `Accept-Language`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/profile.lang_updated` → ar «تم تغيير اللغة» / en \"Language changed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lang) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "lang",
                          "value": "en",
                          "type": "text",
                          "description": "required · required|Rule::enum(Lang::class) (ar,en) · اللغة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — switch to English",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/lang",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "lang"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "lang",
                              "value": "en",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تغيير اللغة\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"en\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — back to Arabic",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/lang",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "lang"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "lang",
                              "value": "ar",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تغيير اللغة\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — lang «fr»",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/lang",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "lang"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "lang",
                              "value": "fr",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد اللغة غير صالح.\",\n  \"errors\": {\n    \"lang\": [\n      \"حقل المحدد اللغة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/lang",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "lang"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "lang",
                              "value": "en",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/lang",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "lang"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "lang",
                              "value": "en",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "notifications-toggle",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"national_id_masked\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"donor_code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"birth_date\"); pm.expect(o).to.have.property(\"gender\"); pm.expect(o).to.have.property(\"completed_donations_count\"); pm.expect(o).to.have.property(\"badge\"); pm.expect(o).to.have.property(\"active_status_text\"); pm.expect(o).to.have.property(\"next_eligible_at\"); pm.expect(o).to.have.property(\"next_eligible_text\"); pm.expect(o).to.have.property(\"days_until_eligible\"); pm.expect(o).to.have.property(\"can_donate\"); pm.expect(o).to.have.property(\"permanently_deferred\"); pm.expect(o).to.have.property(\"nafath_verified\"); pm.expect(o).to.have.property(\"is_notify\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"show_in_donor_lists\"); pm.expect(o).to.have.property(\"is_complete_info\"); pm.expect(o).to.have.property(\"next_step\"); pm.expect(o).to.have.property(\"missing_fields\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}profile/notifications",
                      "host": [
                        "{{base_url}}profile"
                      ],
                      "path": [
                        "notifications"
                      ]
                    },
                    "description": "## Purpose\nتشغيل/إيقاف إشعارات الـ push.\n\n## Screens\n- U75 More — toggle الإشعارات — user app `424:12688`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12688&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12688&scaling=scale-down&content-scaling=fixed)\n- U75 More — toggle الإشعارات — user web `89:1500`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1500&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1500&scaling=scale-down&content-scaling=fixed)\n- W6 More (web) — user web `89:1500`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1500&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1500&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Body (form-data)\n- `is_notify` — required · required|boolean (1/0) · الإشعارات · example: `0`\n\n\n## Behaviour notes\n**Steps:**\n1. يضبط `users.is_notify`.\n2. الإعداد يتحكم في **push فقط** — الإشعارات تُخزن في القائمة دائماً.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/profile.notifications_updated` → ar «تم تحديث إعداد الإشعارات» / en \"Notification setting updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (is_notify) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "is_notify",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|boolean (1/0) · الإشعارات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — push off",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/notifications",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "notifications"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "is_notify",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث إعداد الإشعارات\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": false,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — push on",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/notifications",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "notifications"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "is_notify",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث إعداد الإشعارات\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — empty body",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/notifications",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "notifications"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل استلام الإشعارات مطلوب.\",\n  \"errors\": {\n    \"is_notify\": [\n      \"الحقل استلام الإشعارات مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/notifications",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "notifications"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "is_notify",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — profile incomplete",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/notifications",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "notifications"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "is_notify",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}profile/notifications",
                          "host": [
                            "{{base_url}}profile"
                          ],
                          "path": [
                            "notifications"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "is_notify",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "item": [
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/notifications",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "notifications",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الإشعارات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: notifications (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"notifications\": 25\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ],
                  "description": "كل ما يحتاجه flow `profile` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>»."
                }
              ],
              "description": "Flow `profile` — 4 endpoints (sprint 1). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests."
            }
          ]
        },
        {
          "name": "Logic",
          "item": [
            {
              "name": "centers",
              "description": "Flow `centers` — 2 endpoints (sprint 3). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "branches",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"branch cards\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"is_bookable\"); pm.expect(o).to.have.property(\"today_hours\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"branch_id\", l[0].id); pm.environment.set(\"branch_id\", l[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}branches",
                      "host": [
                        "{{base_url}}branches"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                          "disabled": true
                        },
                        {
                          "key": "lat",
                          "value": "24.7136",
                          "description": "optional · nullable|numeric|required_with:lng · الموقع",
                          "disabled": true
                        },
                        {
                          "key": "lng",
                          "value": "46.6753",
                          "description": "optional · nullable|numeric|required_with:lat · الموقع",
                          "disabled": true
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "فيصل",
                          "description": "optional · nullable|string|max:100 · بحث بالاسم",
                          "disabled": true
                        },
                        {
                          "key": "available_today",
                          "value": "1",
                          "description": "optional · nullable|boolean · متاح اليوم",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nالبحث عن مراكز التبرع (خريطة/قائمة/المساعد).\n\n## Screens\n- U23 Centers / Map — user app `424:3987`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&scaling=scale-down&content-scaling=fixed)\n- U23 Centers / Map — user web `84:1430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user app `424:6959`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user web `245:7910`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user app `424:7052`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user web `245:8370`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user app `424:7957`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user web `245:8140`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user app `424:8050`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user web `84:1625`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user app `767:751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user web `825:11864`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user app `767:1946`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user web `825:13430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `donation_type_id` — optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `lat` — optional · nullable|numeric|required_with:lng · الموقع · example: `24.7136`\n- `lng` — optional · nullable|numeric|required_with:lat · الموقع · example: `46.6753`\n- `city_id` — optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث بالاسم · example: `فيصل`\n- `available_today` — optional · nullable|boolean · متاح اليوم · example: `1`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `Branch::active()` + جهة نشطة.\n2. فلاتر: `donation_type_id` (pivot)، `city_id`، `search` (الاسم/الحي)، `available_today=1` (يعمل اليوم ولا إغلاق ولا كل الفترات ممتلئة).\n3. الترتيب: بالمسافة (Haversine) لو `lat/lng`، وإلا مدينة المستخدم أولاً ثم الاسم.\n4. لكل فرع: `is_open_now`, `is_open_today`, `is_bookable` (نشط ∧ يقدم النوع ∧ ليس مغلقاً اليوم بالكامل)، `today_hours`, `working_days_text`, `distance_km`, `donation_types[]`.\n5. `meta.count` = «٣ مراكز قريبة» / «العدد».\n\n**Business rules / constraints:**\n- `is_open_now` = اليوم يوم عمل ∧ الوقت بين `opens_at`/`closes_at` ∧ لا `branch_closures` اليوم.\n- زر «اختيار هذا المركز» يتعطل عندما `is_bookable=false` (U28).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lat/lng, donation_type_id, city_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 08:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"King Fahad Medical City — Main Building\",\n        \"district\": \"Sulaimaniyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"King Saud University — KSU Donation Center\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 AM - 06:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"King Khalid University Hospital — Outpatient Clinics\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"Closed now\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Central Blood Bank — Central Blood Bank Donation Center\",\n        \"district\": \"Al Okayshiyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Every day\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n        \"district\": \"Al Shati\",\n        \"city\": \"Dammam\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 04:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"King Fahd Specialist Hospital — Blood Donation Center\",\n        \"district\": \"Al Asafiyah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 07:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n        \"district\": \"Al Rawdah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 AM - 05:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · فلترة (نوع التبرع + المدينة + متاح اليوم)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches?donation_type_id=1&city_id=1&available_today=1",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 4,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 4\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (lng, donation_type_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches?lat=24.7136&donation_type_id=99999",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل خط الطول مطلوب إذا توفّر خط العرض. (and 1 more error)\",\n  \"errors\": {\n    \"lng\": [\n      \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\"\n    ],\n    \"donation_type_id\": [\n      \"حقل المحدد نوع التبرع غير صالح.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"branch detail\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"working_hours\"); pm.expect(o).to.have.property(\"donation_types\"); pm.expect(o).to.have.property(\"is_bookable\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}branches/{id}",
                      "host": [
                        "{{base_url}}branches"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{branch_id}}",
                          "description": "required · exists:branches,id (active) · الفرع · source: GET {{base_url}}branches"
                        }
                      ],
                      "query": [
                        {
                          "key": "lat",
                          "value": "24.7136",
                          "description": "optional · nullable|numeric|required_with:lng · لحساب المسافة",
                          "disabled": true
                        },
                        {
                          "key": "lng",
                          "value": "46.6753",
                          "description": "optional · nullable|numeric|required_with:lat · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل مركز التبرع + أنواعه وساعاته.\n\n## Screens\n- U25 Center Details / KFSH (متاح اليوم) — user app `424:4057`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4057&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4057&scaling=scale-down&content-scaling=fixed)\n- U25 Center Details / KFSH (متاح اليوم) — user web `84:1927`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1927&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1927&scaling=scale-down&content-scaling=fixed)\n- U30 Center Details / KFMC — user app `424:8229`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8229&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8229&scaling=scale-down&content-scaling=fixed)\n- U30 Center Details / KFMC — user web `84:4238`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-4238&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-4238&scaling=scale-down&content-scaling=fixed)\n- U32 Center Details / KKUH (مغلق حالياً) — user app `424:8789`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8789&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8789&scaling=scale-down&content-scaling=fixed)\n- U32 Center Details / KKUH (مغلق حالياً) — user web `84:4514`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-4514&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-4514&scaling=scale-down&content-scaling=fixed)\n- U150 Select Donation Type (من مركز) — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:branches,id (active) · الفرع · source: GET {{base_url}}branches · example: `1`\n\n### Query params\n- `lat` — optional · nullable|numeric|required_with:lng · لحساب المسافة · example: `24.7136`\n- `lng` — optional · nullable|numeric|required_with:lat ·  · example: `46.6753`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع `BranchResource` الكامل للفرع النشط: الاسم، النوع «مركز التبرع بالدم»، العنوان، الحي، المدينة، lat/lng، ساعات العمل لكل يوم، `is_open_today`, `is_open_now`, `is_bookable`، الأنواع المتاحة (`DonationTypeResource`)، المسافة لو أُرسل الموقع.\n2. فرع غير نشط/محذوف → 404.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: `{id}` is `{{branch_id}}`, saved by the `branches` list (first center) - like every other detail request of the collection.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | فرع غير موجود/غير نشط | `messages.not_found` | العنصر غير موجود | Not found |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{branch_id}}",
                              "description": "required · exists:branches,id (active) · الفرع · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · لحساب المسافة",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"BR-001\",\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n    \"type_label\": \"مركز التبرع بالدم\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\"\n    },\n    \"address\": \"حي العليا، طريق الملك فهد 12713\",\n    \"district\": \"العليا\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"lat\": 24.6948,\n    \"lng\": 46.6842,\n    \"phone\": \"0114647272\",\n    \"distance_km\": 2.3,\n    \"image\": \"http://help.test/uploads/branches/1.png\",\n    \"is_open_today\": true,\n    \"is_open_now\": true,\n    \"is_bookable\": true,\n    \"status_label\": {\n      \"value\": \"available_today\",\n      \"label\": \"متاح اليوم\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"today_hours\": \"08:00 ص - 08:00 م\",\n    \"working_days_text\": \"السبت – الخميس\",\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"السبت\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"الأحد\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"الاثنين\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"الثلاثاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"الأربعاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"الخميس\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"الجمعة\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      }\n    ],\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"دم كامل\",\n        \"duration_minutes\": 30,\n        \"lives_text\": \"ينقذ ٣ أرواح\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"صفائح دموية\",\n        \"duration_minutes\": 90,\n        \"lives_text\": \"ينقذ ٣ مرضى سرطان\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"بلازما\",\n        \"duration_minutes\": 45,\n        \"lives_text\": \"ينقذ مصابي الحروق\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"كريات حمراء\",\n        \"duration_minutes\": 45,\n        \"lives_text\": \"ينقذ حياة مريض\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{branch_id}}",
                              "description": "required · exists:branches,id (active) · الفرع · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · لحساب المسافة",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"BR-001\",\n    \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n    \"type_label\": \"Blood donation centre\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\"\n    },\n    \"address\": \"Al Olaya, King Fahd Road 12713\",\n    \"district\": \"Olaya\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"Riyadh\"\n    },\n    \"lat\": 24.6948,\n    \"lng\": 46.6842,\n    \"phone\": \"0114647272\",\n    \"distance_km\": 2.3,\n    \"image\": \"http://help.test/uploads/branches/1.png\",\n    \"is_open_today\": true,\n    \"is_open_now\": true,\n    \"is_bookable\": true,\n    \"status_label\": {\n      \"value\": \"available_today\",\n      \"label\": \"Available today\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"today_hours\": \"08:00 AM - 08:00 PM\",\n    \"working_days_text\": \"Saturday – Thursday\",\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"Saturday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"Sunday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"Monday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"Tuesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"Wednesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"Thursday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"Friday\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      }\n    ],\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"Whole Blood\",\n        \"duration_minutes\": 30,\n        \"lives_text\": \"Saves 3 lives\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Platelets\",\n        \"duration_minutes\": 90,\n        \"lives_text\": \"Saves 3 cancer patients\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Plasma\",\n        \"duration_minutes\": 45,\n        \"lives_text\": \"Helps burn victims\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Red Cells\",\n        \"duration_minutes\": 45,\n        \"lives_text\": \"Saves a patient's life\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{branch_id}}",
                              "description": "required · exists:branches,id (active) · الفرع · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · لحساب المسافة",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"BR-001\",\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n    \"type_label\": \"مركز التبرع بالدم\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\"\n    },\n    \"address\": \"حي العليا، طريق الملك فهد 12713\",\n    \"district\": \"العليا\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"lat\": 24.6948,\n    \"lng\": 46.6842,\n    \"phone\": \"0114647272\",\n    \"distance_km\": 2.3,\n    \"image\": \"http://help.test/uploads/branches/1.png\",\n    \"is_open_today\": true,\n    \"is_open_now\": true,\n    \"is_bookable\": true,\n    \"status_label\": {\n      \"value\": \"available_today\",\n      \"label\": \"متاح اليوم\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"today_hours\": \"08:00 ص - 08:00 م\",\n    \"working_days_text\": \"السبت – الخميس\",\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"السبت\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"الأحد\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"الاثنين\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"الثلاثاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"الأربعاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"الخميس\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"الجمعة\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      }\n    ],\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"دم كامل\",\n        \"duration_minutes\": 30,\n        \"lives_text\": \"ينقذ ٣ أرواح\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"صفائح دموية\",\n        \"duration_minutes\": 90,\n        \"lives_text\": \"ينقذ ٣ مرضى سرطان\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"بلازما\",\n        \"duration_minutes\": 45,\n        \"lives_text\": \"ينقذ مصابي الحروق\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"كريات حمراء\",\n        \"duration_minutes\": 45,\n        \"lives_text\": \"ينقذ حياة مريض\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — مركز غير موجود أو غير نشط",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{branch_id}}",
                              "description": "required · exists:branches,id (active) · الفرع · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · لحساب المسافة",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `centers` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-purposes",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); pm.expect(o).to.have.property(\"tag\"); pm.expect(o).to.have.property(\"description\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-purposes",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-purposes"
                          ]
                        },
                        "description": "## Purpose\nمصدر `purpose` (غرض التبرع: روتيني / إنقاذ حياة / عاجل) — وخطوة «نوع التبرع» في المساعد — قائمة طبيعة التبرع — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U24 Select Donation Purpose — user app `760:10154`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-10154&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-10154&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user app `2251:185`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-185&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-185&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user web `2295:6712`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6712&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6712&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user web `825:10661`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10661&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10661&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\DonationPurpose` بالترتيب المعرّف في الـ enum عبر `DonationPurpose::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `description` من `lang/*/enums.php` → `donation_purpose_descriptions`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-purposes",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-purposes"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\",\n      \"tag\": \"تبرع منتظم\",\n      \"description\": \"تبرع عادي غير مرتبط بحالة طارئة\"\n    },\n    {\n      \"value\": \"life_saving\",\n      \"label\": \"إنقاذ حياة\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"tag\": \"حالة حرجة\",\n      \"description\": \"تبرع موجه لحالة تحتاج إلى متبرعين للمساعدة في إنقاذ حياة\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"tag\": \"استجابة سريعة\",\n      \"description\": \"تبرع مرتبط بحالة عاجلة تحتاج إلى استجابة سريعة\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"branch cards\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"is_bookable\"); pm.expect(o).to.have.property(\"today_hours\"); } });",
                              "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                              "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"branch_id\", l[0].id); pm.environment.set(\"branch_id\", l[0].id); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `id` المركز (branches/{id}) — البحث عن مراكز التبرع (خريطة/قائمة/المساعد).\n\n## Screens\n- U23 Centers / Map — user app `424:3987`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&scaling=scale-down&content-scaling=fixed)\n- U23 Centers / Map — user web `84:1430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user app `424:6959`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user web `245:7910`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user app `424:7052`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user web `245:8370`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user app `424:7957`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user web `245:8140`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user app `424:8050`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user web `84:1625`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user app `767:751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user web `825:11864`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user app `767:1946`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user web `825:13430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `donation_type_id` — optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `lat` — optional · nullable|numeric|required_with:lng · الموقع · example: `24.7136`\n- `lng` — optional · nullable|numeric|required_with:lat · الموقع · example: `46.6753`\n- `city_id` — optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث بالاسم · example: `فيصل`\n- `available_today` — optional · nullable|boolean · متاح اليوم · example: `1`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `Branch::active()` + جهة نشطة.\n2. فلاتر: `donation_type_id` (pivot)، `city_id`، `search` (الاسم/الحي)، `available_today=1` (يعمل اليوم ولا إغلاق ولا كل الفترات ممتلئة).\n3. الترتيب: بالمسافة (Haversine) لو `lat/lng`، وإلا مدينة المستخدم أولاً ثم الاسم.\n4. لكل فرع: `is_open_now`, `is_open_today`, `is_bookable` (نشط ∧ يقدم النوع ∧ ليس مغلقاً اليوم بالكامل)، `today_hours`, `working_days_text`, `distance_km`, `donation_types[]`.\n5. `meta.count` = «٣ مراكز قريبة» / «العدد».\n\n**Business rules / constraints:**\n- `is_open_now` = اليوم يوم عمل ∧ الوقت بين `opens_at`/`closes_at` ∧ لا `branch_closures` اليوم.\n- زر «اختيار هذا المركز» يتعطل عندما `is_bookable=false` (U28).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lat/lng, donation_type_id, city_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 08:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"King Fahad Medical City — Main Building\",\n        \"district\": \"Sulaimaniyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"King Saud University — KSU Donation Center\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 AM - 06:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"King Khalid University Hospital — Outpatient Clinics\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"Closed now\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Central Blood Bank — Central Blood Bank Donation Center\",\n        \"district\": \"Al Okayshiyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Every day\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n        \"district\": \"Al Shati\",\n        \"city\": \"Dammam\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 04:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"King Fahd Specialist Hospital — Blood Donation Center\",\n        \"district\": \"Al Asafiyah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 07:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n        \"district\": \"Al Rawdah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 AM - 05:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · فلترة (نوع التبرع + المدينة + متاح اليوم)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?donation_type_id=1&city_id=1&available_today=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 4,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 4\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · متبرع مسجّل",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (lng, donation_type_id)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&donation_type_id=99999",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل خط الطول مطلوب إذا توفّر خط العرض. (and 1 more error)\",\n  \"errors\": {\n    \"lng\": [\n      \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\"\n    ],\n    \"donation_type_id\": [\n      \"حقل المحدد نوع التبرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "eligibility",
              "description": "Flow `eligibility` — 3 endpoints (sprint 4). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "eligibility-questions",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"chat blocks\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"intro_messages\"); pm.expect(o).to.have.property(\"questions\"); pm.expect(o).to.have.property(\"received_message\"); });",
                          "pm.test(\"questions (type, text, options)\", () => { const l = pm.response.json().data.questions; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"question\"); pm.expect(o).to.have.property(\"options\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}eligibility/questions",
                      "host": [
                        "{{base_url}}eligibility"
                      ],
                      "path": [
                        "questions"
                      ]
                    },
                    "description": "## Purpose\nأسئلة الشات لاختبار الأهلية (يكتبها الأدمن).\n\n## Screens\n- U38 Eligibility Assessment (chat) — user app `2051:8899`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-8899&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-8899&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user app `2251:1293`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user web `2295:6898`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6898&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6898&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user web `2051:9044`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-9044&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-9044&scaling=scale-down&content-scaling=fixed)\n- U158 Eligibility (من مركز) — user app `2251:1293`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. لو `settings.ai_enabled=false` → 404 `eligibility.disabled` (الواجهة تخفي زر الاختبار).\n2. يرجع الأسئلة النشطة مرتبة (`sort_order`) مع خياراتها (single_choice) أو `type=text` (TEXTAREA).\n3. `intro_messages` = رسائل المساعد الافتتاحية (lang) — تُعرض كفقاعات الشات.\n4. الفصيلة/العمر/الجنس/آخر تبرع **لا تُسأل** — تُرسل تلقائياً للنموذج (analysis §8).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `ai_enabled=false` | `eligibility.disabled` | اختبار الأهلية غير متاح حالياً | Eligibility test is currently disabled |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/questions",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "questions"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"intro_messages\": [\n      \"مرحباً محمد 👋 سأطرح عليك بعض الأسئلة القصيرة للتأكد من جاهزيتك للتبرع.\"\n    ],\n    \"questions\": [\n      {\n        \"id\": 1,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"اختيار\"\n        },\n        \"question\": \"هل تعاني من أي أمراض مزمنة؟\",\n        \"options\": [\n          {\n            \"id\": 1,\n            \"label\": \"نعم\"\n          },\n          {\n            \"id\": 2,\n            \"label\": \"لا\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"type\": {\n          \"value\": \"text\",\n          \"label\": \"نص\"\n        },\n        \"question\": \"هل تتناول أي أدوية أو تعرضت لأي إجراء طبي في الفترة السابقة؟\",\n        \"options\": []\n      },\n      {\n        \"id\": 3,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"اختيار\"\n        },\n        \"question\": \"هل سافرت خارج المملكة خلال الأشهر الستة الماضية؟\",\n        \"options\": [\n          {\n            \"id\": 3,\n            \"label\": \"نعم\"\n          },\n          {\n            \"id\": 4,\n            \"label\": \"لا\"\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"اختيار\"\n        },\n        \"question\": \"متى كان آخر تبرع لك بالدم؟\",\n        \"options\": [\n          {\n            \"id\": 5,\n            \"label\": \"لم أتبرع من قبل\"\n          },\n          {\n            \"id\": 6,\n            \"label\": \"قبل أكثر من 3 أشهر\"\n          },\n          {\n            \"id\": 7,\n            \"label\": \"خلال آخر 3 أشهر\"\n          }\n        ]\n      }\n    ],\n    \"received_message\": \"تم استلام إجاباتك، جارٍ التقييم…\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/questions",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "questions"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"intro_messages\": [\n      \"Hi محمد 👋 I will ask you a few short questions to make sure you are ready to donate.\"\n    ],\n    \"questions\": [\n      {\n        \"id\": 1,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"Choice\"\n        },\n        \"question\": \"Do you have any chronic diseases?\",\n        \"options\": [\n          {\n            \"id\": 1,\n            \"label\": \"Yes\"\n          },\n          {\n            \"id\": 2,\n            \"label\": \"No\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"type\": {\n          \"value\": \"text\",\n          \"label\": \"Text\"\n        },\n        \"question\": \"Are you taking any medication or have you had any medical procedure recently?\",\n        \"options\": []\n      },\n      {\n        \"id\": 3,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"Choice\"\n        },\n        \"question\": \"Have you travelled outside the Kingdom in the last six months?\",\n        \"options\": [\n          {\n            \"id\": 3,\n            \"label\": \"Yes\"\n          },\n          {\n            \"id\": 4,\n            \"label\": \"No\"\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"Choice\"\n        },\n        \"question\": \"When was your last blood donation?\",\n        \"options\": [\n          {\n            \"id\": 5,\n            \"label\": \"I have never donated\"\n          },\n          {\n            \"id\": 6,\n            \"label\": \"More than 3 months ago\"\n          },\n          {\n            \"id\": 7,\n            \"label\": \"Within the last 3 months\"\n          }\n        ]\n      }\n    ],\n    \"received_message\": \"Your answers were received, assessing…\"\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — ai_enabled=false",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/questions",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "questions"
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"اختبار الأهلية غير متاح حالياً\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/questions",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "questions"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/questions",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "questions"
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/questions",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "questions"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "submit-assessment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"user_token\") }; pm.sendRequest({ url: base + \"eligibility/questions\", method: \"GET\", header: h }, (e, r) => { if (e || r.code !== 200) return; const qs = r.json().data.questions; if (!qs.length) return; pm.request.body.formdata.remove((f) => /^answers\\[/.test(f.key)); qs.forEach((q, i) => { pm.request.body.formdata.add({ key: \"answers[\" + i + \"][question_id]\", value: String(q.id), type: \"text\" }); if (q.type.value === \"text\" || !q.options.length) pm.request.body.formdata.add({ key: \"answers[\" + i + \"][answer_text]\", value: \"لا أتناول أي أدوية\", type: \"text\" }); else pm.request.body.formdata.add({ key: \"answers[\" + i + \"][option_id]\", value: String(q.options[Math.min(1, q.options.length - 1)].id), type: \"text\" }); }); });",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"verdict\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"assessment_id\"); pm.expect(o).to.have.property(\"result\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"can_continue_booking\"); pm.expect(o).to.have.property(\"completed_at\"); });",
                          "pm.test(\"colored result\", () => { const r = pm.response.json().data.result; pm.expect([\"eligible\", \"not_eligible\", \"unavailable\"]).to.include(r.value); pm.expect(r).to.have.property(\"color\"); pm.expect(r).to.have.property(\"bg_color\"); });",
                          "{ const v = pm.response.json().data.assessment_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"eligibility_assessment_id\", v); pm.environment.set(\"eligibility_assessment_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}eligibility/assessments",
                      "host": [
                        "{{base_url}}eligibility"
                      ],
                      "path": [
                        "assessments"
                      ]
                    },
                    "description": "## Purpose\nتقييم الأهلية بالذكاء الاصطناعي من إجابات المستخدم.\n\n## Screens\n- U38 Eligibility Assessment (chat) — user app `2051:8899`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-8899&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-8899&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user app `2251:1293`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user web `2295:6898`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6898&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6898&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user web `2051:9044`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-9044&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-9044&scaling=scale-down&content-scaling=fixed)\n- G-02 شاشة النتيجة — مؤهل / غير مؤهل + السبب / تعذّر التقييم (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n- Rate limit: `throttle:eligibility` (5/hour per user)\n\n## Parameters & fields\n### Body (form-data)\n- `donation_type_id` — optional · nullable|exists:donation_types,id · النوع المختار في مسار الحجز · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `answers` — required · required|array|min:1 · الإجابات · example: `(rows below)`\n- `answers[0][question_id]` — required · required|exists:eligibility_questions,id (active, whereNull deleted_at) · السؤال · source: GET {{base_url}}eligibility/questions · example: `1`\n- `answers[0][option_id]` — required if question type single_choice · nullable|exists:eligibility_question_options,id (belongs to question) · الخيار · source: questions[].options[].id · example: `2`\n- `answers[1][question_id]` — required · required · السؤال 2 · example: `2`\n- `answers[1][answer_text]` — required if type text · nullable|string|max:1000 · الإجابة النصية · example: `لا أتناول أي أدوية`\n\n\n## Behaviour notes\n**Steps:**\n1. يتحقق أن كل الأسئلة النشطة مُجابة (option_id لـ single_choice، answer_text لـ text).\n2. يبني `context` تلقائياً: الفصيلة، العمر (من birth_date)، الجنس، تاريخ ونوع آخر تبرع، `donation_type_id` المختار.\n3. يستدعي مزوّد الـ AI المضبوط (`settings.ai_provider` = gemini|claude، `ai_model`، `ai_prompt`) عبر `AiProvider` Strategy — مكالمة متزامنة بمهلة 20 ث، مخرجات JSON `{result, reason}` بلغة المستخدم.\n4. فشل/مهلة/JSON غير صالح → `result=unavailable` + `eligibility.unavailable` (200 — لا يمنع الحجز).\n5. يخزن `eligibility_assessments` + `eligibility_answers` (snapshot نص السؤال والإجابة) + `raw_response`, `ai_provider`, `ai_model`, `completed_at`.\n6. يرجع `{assessment_id, result{value,label,color,bg_color}, reason, can_continue_booking}`.\n\n**Business rules / constraints:**\n- النتيجة إرشادية؛ `not_eligible` تمنع **الحجز المرتبط بها** فقط (`booking.not_eligible`).\n- مفتاح الـ API لا يُسجَّل أبداً (redacted).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- Synchronous AI call (not queued — the user waits on the chat); failures `report()`ed.\n\n> Postman: the pre-request rebuilds `answers[]` from `GET eligibility/questions` (one answer per live question: a `text` question gets a sentence, a choice question its second option), so a re-seeded or edited question bank cannot break the request; the rows below are only the shape of the example.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/eligibility.completed` → ar «تم التقييم» / en \"Assessment completed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (answers) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 200 | AI down → `result=unavailable` | `eligibility.unavailable` | تعذّر التقييم حالياً — يمكنك متابعة الحجز | Assessment unavailable — you can continue booking |\n| 404 | `ai_enabled=false` | `eligibility.disabled` | اختبار الأهلية غير متاح حالياً | Eligibility test is currently disabled |\n| 429 | تجاوز 5 تقييمات/ساعة | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|exists:donation_types,id · النوع المختار في مسار الحجز · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "answers[0][question_id]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:eligibility_questions,id (active, whereNull deleted_at) · السؤال · source: GET {{base_url}}eligibility/questions"
                        },
                        {
                          "key": "answers[0][option_id]",
                          "value": "2",
                          "type": "text",
                          "description": "required if question type single_choice · nullable|exists:eligibility_question_options,id (belongs to question) · الخيار · source: questions[].options[].id"
                        },
                        {
                          "key": "answers[1][question_id]",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|exists:eligibility_questions,id (active, whereNull deleted_at) · السؤال · source: GET {{base_url}}eligibility/questions"
                        },
                        {
                          "key": "answers[1][answer_text]",
                          "value": "لا أتناول أي أدوية",
                          "type": "text",
                          "description": "required if type text · nullable|string|max:1000 · الإجابة النصية"
                        },
                        {
                          "key": "answers[2][question_id]",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|exists:eligibility_questions,id (active, whereNull deleted_at) · السؤال · source: GET {{base_url}}eligibility/questions"
                        },
                        {
                          "key": "answers[2][option_id]",
                          "value": "4",
                          "type": "text",
                          "description": "required if question type single_choice · nullable|exists:eligibility_question_options,id (belongs to question) · الخيار · source: questions[].options[].id"
                        },
                        {
                          "key": "answers[3][question_id]",
                          "value": "4",
                          "type": "text",
                          "description": "required · required|exists:eligibility_questions,id (active, whereNull deleted_at) · السؤال · source: GET {{base_url}}eligibility/questions"
                        },
                        {
                          "key": "answers[3][option_id]",
                          "value": "6",
                          "type": "text",
                          "description": "required if question type single_choice · nullable|exists:eligibility_question_options,id (belongs to question) · الخيار · source: questions[].options[].id"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — eligible (fake AI driver)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم التقييم\",\n  \"data\": {\n    \"assessment_id\": 6,\n    \"result\": {\n      \"value\": \"eligible\",\n      \"label\": \"مؤهل\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"reason\": \"إجاباتك لا تشير إلى أي مانع للتبرع حالياً.\",\n    \"can_continue_booking\": true,\n    \"consumed\": false,\n    \"completed_at\": \"2026-10-18T12:31:08+00:00\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — not_eligible + reason",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم التقييم\",\n  \"data\": {\n    \"assessment_id\": 7,\n    \"result\": {\n      \"value\": \"not_eligible\",\n      \"label\": \"غير مؤهل\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"reason\": \"بسبب إجابتك عن «هل تعاني من أي أمراض مزمنة؟» يُنصح بمراجعة الطبيب قبل التبرع، ويمكنك إعادة التقييم لاحقاً.\",\n    \"can_continue_booking\": false,\n    \"consumed\": false,\n    \"completed_at\": \"2026-10-18T12:31:08+00:00\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — unavailable (AI timeout)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تعذّر التقييم حالياً — يمكنك متابعة الحجز\",\n  \"data\": {\n    \"assessment_id\": 8,\n    \"result\": {\n      \"value\": \"unavailable\",\n      \"label\": \"تعذّر التقييم\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"reason\": null,\n    \"can_continue_booking\": true,\n    \"consumed\": false,\n    \"completed_at\": \"2026-10-18T12:31:08+00:00\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — missing answer",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى الإجابة عن جميع الأسئلة.\",\n  \"errors\": {\n    \"answers\": [\n      \"يرجى الإجابة عن جميع الأسئلة.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 429 — تجاوز 5 تقييمات/ساعة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 3600\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — ai_enabled=false",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"اختبار الأهلية غير متاح حالياً\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][question_id]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "answers[0][option_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][question_id]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "answers[1][answer_text]",
                              "value": "لا أتناول أي أدوية",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][question_id]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "answers[2][option_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][question_id]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "answers[3][option_id]",
                              "value": "6",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "latest-assessment",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"null or a verdict\", () => { const o = pm.response.json().data; if (o !== null) { pm.expect(o).to.have.property(\"assessment_id\"); pm.expect(o).to.have.property(\"result\"); pm.expect(o).to.have.property(\"consumed\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}eligibility/assessments/latest",
                      "host": [
                        "{{base_url}}eligibility"
                      ],
                      "path": [
                        "assessments",
                        "latest"
                      ]
                    },
                    "description": "## Purpose\nآخر نتيجة اختبار أهلية للمستخدم.\n\n## Screens\n- U35 Review Booking — «اختبار أهلية التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «اختبار أهلية التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع آخر تقييم للمستخدم (غير مستهلك أولاً) أو `null` — لاستعادة حالة شاشة المراجعة بعد العودة من الشات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments/latest",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments",
                            "latest"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"assessment_id\": 6,\n    \"result\": {\n      \"value\": \"eligible\",\n      \"label\": \"مؤهل\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"reason\": \"إجاباتك لا تشير إلى أي مانع للتبرع حالياً.\",\n    \"can_continue_booking\": true,\n    \"consumed\": false,\n    \"completed_at\": \"2026-10-18T12:31:08+00:00\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments/latest",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments",
                            "latest"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"assessment_id\": 6,\n    \"result\": {\n      \"value\": \"eligible\",\n      \"label\": \"Eligible\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"reason\": \"إجاباتك لا تشير إلى أي مانع للتبرع حالياً.\",\n    \"can_continue_booking\": true,\n    \"consumed\": false,\n    \"completed_at\": \"2026-10-18T12:31:08+00:00\"\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments/latest",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments",
                            "latest"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments/latest",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments",
                            "latest"
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/assessments/latest",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "assessments",
                            "latest"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `eligibility` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/donation-terms",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "donation-terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «شروط وتعليمات التبرع» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — donation-terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "appointments",
              "description": "Flow `appointments` — 4 endpoints (sprint 4). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "appointments",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"appointment cards (lean) with the fixed buttons\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"day_name\"); pm.expect(o).to.have.property(\"time\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"appointment_id\", l[0].id); pm.environment.set(\"appointment_id\", l[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appointments",
                      "host": [
                        "{{base_url}}appointments"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "tab",
                          "value": "upcoming",
                          "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة مواعيدي (القادمة/السجل).\n\n## Screens\n- U61 Appointments (القادمة) — user app `424:3640`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3640&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3640&scaling=scale-down&content-scaling=fixed)\n- U61 Appointments (القادمة) — user web `89:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2&scaling=scale-down&content-scaling=fixed)\n- U62 Appointments (السجل) — user app `424:10158`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10158&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10158&scaling=scale-down&content-scaling=fixed)\n- U62 Appointments (السجل) — user web `89:243`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-243&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-243&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Query params\n- `tab` — optional · nullable|in:upcoming,history (default upcoming) · التبويب · example: `upcoming`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `tab=upcoming` → pending/confirmed بتاريخ ≥ الآن (ترتيب تصاعدي) — عملياً سجل واحد (C4).\n2. `tab=history` → rejected/cancelled/expired/attended/no_show + الماضي (ترتيب تنازلي).\n3. لكل عنصر `action_buttons` (نفس المجموعة الثابتة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (tab) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — upcoming (main donor)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 399,\n        \"code\": \"BK-2610-044\",\n        \"date\": \"2026-10-25\",\n        \"day_name\": \"الأحد\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 1,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — history",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments?tab=history",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 398,\n        \"code\": \"BK-2610-043\",\n        \"date\": \"2026-10-15\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-15T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/398/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/398/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.693,46.715\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/363?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 397,\n        \"code\": \"BK-2610-042\",\n        \"date\": \"2026-10-08\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-10-08T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/397/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/397/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/362?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 396,\n        \"code\": \"BK-2609-031\",\n        \"date\": \"2026-09-10\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-09-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/396/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/396/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/361?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 391,\n        \"code\": \"BK-2606-015\",\n        \"date\": \"2026-06-10\",\n        \"day_name\": \"الأربعاء\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-06-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/391/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/391/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/360?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 390,\n        \"code\": \"BK-2602-014\",\n        \"date\": \"2026-03-02\",\n        \"day_name\": \"الاثنين\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-03-02T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/390/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/390/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/359?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 389,\n        \"code\": \"BK-2511-012\",\n        \"date\": \"2025-11-22\",\n        \"day_name\": \"السبت\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-11-22T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/389/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/389/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/358?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 395,\n        \"code\": \"BK-2511-013\",\n        \"date\": \"2025-11-15\",\n        \"day_name\": \"السبت\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2025-11-15T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/395/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/395/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 388,\n        \"code\": \"BK-2508-014\",\n        \"date\": \"2025-08-14\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-08-14T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/388/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/388/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/357?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 387,\n        \"code\": \"BK-2504-008\",\n        \"date\": \"2025-05-06\",\n        \"day_name\": \"الثلاثاء\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2025-05-06T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/387/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/387/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.693,46.715\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/356?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 394,\n        \"code\": \"BK-2504-009\",\n        \"date\": \"2025-04-29\",\n        \"day_name\": \"الثلاثاء\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2025-04-29T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/394/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/394/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 386,\n        \"code\": \"BK-2501-006\",\n        \"date\": \"2025-01-26\",\n        \"day_name\": \"الأحد\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-01-26T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/386/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/386/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/355?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 385,\n        \"code\": \"BK-2410-006\",\n        \"date\": \"2024-10-18\",\n        \"day_name\": \"الجمعة\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2024-10-18T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 8,\n          \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n          \"district\": \"العكيشية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/385/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/385/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.66,46.71\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/354?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 393,\n        \"code\": \"BK-2410-007\",\n        \"date\": \"2024-10-12\",\n        \"day_name\": \"السبت\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2024-10-12T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"no_show\",\n          \"label\": \"لم يحضر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/393/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/393/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 384,\n        \"code\": \"BK-2407-005\",\n        \"date\": \"2024-07-10\",\n        \"day_name\": \"الأربعاء\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2024-07-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/384/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/384/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/353?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 383,\n        \"code\": \"BK-2403-004\",\n        \"date\": \"2024-04-01\",\n        \"day_name\": \"الاثنين\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2024-04-01T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/383/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/383/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.693,46.715\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/352?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 19,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 399,\n        \"code\": \"BK-2610-044\",\n        \"date\": \"2026-10-25\",\n        \"day_name\": \"Sunday\",\n        \"time\": \"10:00 AM\",\n        \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel appointment\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"Reschedule\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"Open map\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"View donation\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 1,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (tab)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments?tab=other",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد التبويب غير صالح.\",\n  \"errors\": {\n    \"tab\": [\n      \"حقل المحدد التبويب غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "appointment-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"appointment details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"purpose\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"preparation_note\"); pm.expect(o).to.have.property(\"can_change_until\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"the fixed donor buttons\", () => pm.expect(pm.response.json().data.action_buttons.map((b) => b.key)).to.eql([\"cancel\", \"reschedule\", \"open_map\", \"view_donation\"]));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appointments/{id}",
                      "host": [
                        "{{base_url}}appointments"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{appointment_id}}",
                          "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل الموعد وأزراره.\n\n## Screens\n- U63 Appointment Details / Confirmed — user app `424:10294`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10294&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10294&scaling=scale-down&content-scaling=fixed)\n- U63 Appointment Details / Confirmed — user web `89:470`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-470&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-470&scaling=scale-down&content-scaling=fixed)\n- U64 Appointment Details / Pending — user app `424:10410`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10410&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10410&scaling=scale-down&content-scaling=fixed)\n- U64 Appointment Details / Pending — user web `89:716`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-716&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-716&scaling=scale-down&content-scaling=fixed)\n- U65 Confirmed v02 — user app `424:10526`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10526&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10526&scaling=scale-down&content-scaling=fixed)\n- U65 Confirmed v02 — user web `89:962`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-962&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-962&scaling=scale-down&content-scaling=fixed)\n- U65 Confirmed v02 — user web `89:1208`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1208&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1208&scaling=scale-down&content-scaling=fixed)\n- U66 Pending v02 — user app `424:10642`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10642&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10642&scaling=scale-down&content-scaling=fixed)\n- G-03 أزرار إلغاء/تعديل الموعد (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment of current user · الموعد · source: GET {{base_url}}appointments · example: `12`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppointmentResource` الكامل: الحالة، المركز + الحي + العنوان + lat/lng، التاريخ، النوع، الوقت، `preparation_note` (تذكير التحضير الخاص بالنوع من `donation_types.preparation_note`)، سبب الرفض/الإلغاء.\n2. `action_buttons` = `cancel` · `reschedule` · `open_map` · `view_donation` (المجموعة ثابتة؛ `is_available` حسب الحالة و`user_change_cutoff_hours`).\n\n**Business rules / constraints:**\n- `cancel`/`reschedule` متاحان لـ pending/confirmed قبل `user_change_cutoff_hours` (6) من الموعد.\n- `view_donation` متاح عند `attended`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | موعد غير موجود أو لمستخدم آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — confirmed (cancel / reschedule available)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"date\": \"2026-10-25\",\n    \"day_name\": \"الأحد\",\n    \"time\": \"10:00 ص\",\n    \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\",\n      \"city\": \"الرياض\",\n      \"address\": \"حي العليا، طريق الملك فهد 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"مؤكد\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"تناول وجبة صحية قبل التبرع وأكثر من شرب الماء، وأحضر هويتك الوطنية.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-25T04:00:00+00:00\",\n    \"reminder_text\": \"سنرسل لك تذكيراً قبل الموعد بـ 24 ساعة\",\n    \"sms_note\": \"ستصلك رسالة SMS برمز الحجز عند تأكيد المركز\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"تعديل الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"فتح الخريطة\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — attended (view_donation available)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 398,\n    \"code\": \"BK-2610-043\",\n    \"date\": \"2026-10-15\",\n    \"day_name\": \"الخميس\",\n    \"time\": \"10:00 ص\",\n    \"starts_at\": \"2026-10-15T10:00:00+00:00\",\n    \"branch\": {\n      \"id\": 5,\n      \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n      \"district\": \"السليمانية\",\n      \"city\": \"الرياض\",\n      \"address\": \"حي السليمانية، طريق الأمير عبدالعزيز بن مساعد\",\n      \"lat\": 24.693,\n      \"lng\": 46.715,\n      \"phone\": \"0112889999\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"status\": {\n      \"value\": \"attended\",\n      \"label\": \"حضر\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"تناول وجبة صحية قبل التبرع وأكثر من شرب الماء، وأحضر هويتك الوطنية.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-15T04:00:00+00:00\",\n    \"reminder_text\": \"سنرسل لك تذكيراً قبل الموعد بـ 24 ساعة\",\n    \"sms_note\": \"ستصلك رسالة SMS برمز الحجز عند تأكيد المركز\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/398/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"تعديل الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/398/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"فتح الخريطة\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.693,46.715\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/363?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"date\": \"2026-10-25\",\n    \"day_name\": \"Sunday\",\n    \"time\": \"10:00 AM\",\n    \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"district\": \"Olaya\",\n      \"city\": \"Riyadh\",\n      \"address\": \"Al Olaya, King Fahd Road 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"Confirmed\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"Eat a healthy meal, drink plenty of water and bring your national ID.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-25T04:00:00+00:00\",\n    \"reminder_text\": \"We'll send you a reminder 24 hours before the appointment\",\n    \"sms_note\": \"You'll get an SMS with the booking code once the center confirms\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel appointment\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"Reschedule\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"Open map\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"View donation\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — موعد غير موجود أو لمستخدم آخر",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "reschedule-appointment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"user_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"appointments?tab=upcoming&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => o.status.value === \"confirmed\" || o.status.value === \"pending\"); if (it) { pm.collectionVariables.set(\"appointment_id\", it.id); pm.environment.set(\"appointment_id\", it.id); { const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"user_token\") }; const put = (k, v) => { pm.collectionVariables.set(k, v); pm.environment.set(k, v); }; const branchId = it.branch.id; const typeId = it.donation_type.id; pm.sendRequest({ url: base + \"branches/\" + branchId + \"/available-dates?donation_type_id=\" + typeId, method: \"GET\", header: h }, (e1, r1) => { if (e1 || r1.code !== 200) return; const today = new Date().toISOString().slice(0, 10); const day = r1.json().data.days.find((d) => d.status.value === \"available\" && d.date > today); if (!day) return; pm.sendRequest({ url: base + \"branches/\" + branchId + \"/slots?donation_type_id=\" + typeId + \"&date=\" + day.date, method: \"GET\", header: h }, (e2, r2) => { if (e2 || r2.code !== 200) return; const slots = [].concat(...r2.json().data.periods.map((x) => x.slots)).filter((x) => x.status.value === \"available\"); if (!slots.length) return; const slot = slots[1] || slots[0]; put(\"booking_date\", day.date); put(\"reschedule_start\", slot.start_time); }); }); } return; } if (meta && page < 2 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"moved booking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"time\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"back to pending\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"pending\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appointments/{id}/reschedule",
                      "host": [
                        "{{base_url}}appointments"
                      ],
                      "path": [
                        "{id}",
                        "reschedule"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{appointment_id}}",
                          "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nتغيير تاريخ/وقت الموعد (يعود لانتظار التأكيد).\n\n## Screens\n- U63 Appointment Details (زر التعديل — gap G-03) — user app `424:10294`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10294&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10294&scaling=scale-down&content-scaling=fixed)\n- U63 Appointment Details (زر التعديل — gap G-03) — user web `89:470`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-470&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-470&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date (إعادة استخدام) — user app `424:8959`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8959&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8959&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date (إعادة استخدام) — user web `84:2888`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2888&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2888&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time (إعادة استخدام) — user app `424:9175`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9175&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9175&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time (إعادة استخدام) — user web `84:3230`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3230&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3230&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment of current user · الموعد · source: GET {{base_url}}appointments · example: `12`\n\n### Body (form-data)\n- `date` — required · required|date_format:Y-m-d|after_or_equal:today · التاريخ الجديد · source: GET {{base_url}}branches/{id}/available-dates · example: `2026-10-27`\n- `start_time` — required · required|date_format:H:i · الوقت الجديد · source: GET {{base_url}}branches/{id}/slots · example: `09:00`\n\n\n## Behaviour notes\n**Steps:**\n1. نفس الفرع والنوع؛ فقط تاريخ/وقت جديد.\n2. نفس حراس الإنشاء للفترة (lock + سعة + نافذة + نفس اليوم + إغلاق) **مستثنياً الحجز نفسه** من الإشغال.\n3. القاطع الزمني على الموعد **الحالي**.\n4. confirmed → يعود `pending` (إلغاء احتساب النداء لو محتسب)؛ pending يبقى pending.\n5. سجل حالة + `meta{old_starts_at,new_starts_at}`.\n\n**Status / state transitions:** `pending|confirmed` → `pending` (reschedule).\n\n**Side effects (Laravel-first):**\n- Event `AppointmentRescheduled` → `provider_booking_rescheduled` (queued).\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `provider_booking_rescheduled` | موظفو قسم appointments | تعديل وقت موعد / Booking rescheduled | طُلب تعديل وقت الحجز :code من :old إلى :new | appointment_id | P20 |\n\n> Postman: ONE pre-request script - it picks the donor live booking, then looks for a free day + slot in THAT booking branch and donation type (a reschedule keeps both) and publishes them as `{{booking_date}}` / `{{reschedule_start}}` (the date / start_time fields; the environment holds fallbacks). The `{id}` segment of the URL is swapped by the same script.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/booking.rescheduled` → ar «تم تعديل الموعد — بانتظار تأكيد المركز» / en \"Appointment updated — awaiting confirmation\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (date, start_time) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | القاطع الزمني | `booking.cutoff_passed` | لا يمكن إلغاء/تعديل الموعد قبل أقل من :hours ساعة | Cannot change within :hours hours of the appointment |\n| 409 | الفترة ممتلئة (pending+confirmed ≥ السعة) أو مغلقة أو خارج ساعات العمل أو يوم إغلاق | `booking.slot_unavailable` | هذه الفترة لم تعد متاحة، اختر وقتاً آخر | This slot is no longer available |\n| 409 | التاريخ بعد `booking_window_days` (30) | `booking.outside_window` | يمكن الحجز حتى :days يوماً قادمة فقط | Booking is allowed up to :days days ahead |\n| 409 | نفس اليوم وبداية الفترة أقل من `same_day_min_lead_minutes` (60) | `booking.too_soon` | اختر فترة تبدأ بعد :minutes دقيقة على الأقل | Pick a slot starting at least :minutes minutes from now |\n| 404 | موعد لمستخدم آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "date",
                          "value": "{{booking_date}}",
                          "type": "text",
                          "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ الجديد · source: GET {{base_url}}branches/{id}/available-dates"
                        },
                        {
                          "key": "start_time",
                          "value": "{{reschedule_start}}",
                          "type": "text",
                          "description": "required · required|date_format:H:i · الوقت الجديد · source: GET {{base_url}}branches/{id}/slots"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — moved (back to pending)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تعديل الموعد — بانتظار تأكيد المركز\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"date\": \"2026-10-20\",\n    \"day_name\": \"الثلاثاء\",\n    \"time\": \"08:30 ص\",\n    \"starts_at\": \"2026-10-20T08:30:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\",\n      \"address\": \"حي العليا، طريق الملك فهد 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"status\": {\n      \"value\": \"pending\",\n      \"label\": \"قيد الانتظار\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"تناول وجبة صحية قبل التبرع وأكثر من شرب الماء، وأحضر هويتك الوطنية.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-20T02:30:00+00:00\",\n    \"reminder_text\": \"سنرسل لك تذكيراً قبل الموعد بـ 24 ساعة\",\n    \"sms_note\": \"ستصلك رسالة SMS برمز الحجز عند تأكيد المركز\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"تعديل الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"فتح الخريطة\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appointment updated — awaiting confirmation\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"date\": \"2026-10-20\",\n    \"day_name\": \"Tuesday\",\n    \"time\": \"08:30 AM\",\n    \"starts_at\": \"2026-10-20T08:30:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"district\": \"Olaya\",\n      \"address\": \"Al Olaya, King Fahd Road 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"status\": {\n      \"value\": \"pending\",\n      \"label\": \"Pending\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"Eat a healthy meal, drink plenty of water and bring your national ID.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-20T02:30:00+00:00\",\n    \"reminder_text\": \"We'll send you a reminder 24 hours before the appointment\",\n    \"sms_note\": \"You'll get an SMS with the booking code once the center confirms\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel appointment\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"Reschedule\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"Open map\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"View donation\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — slot_unavailable (full slot)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "09:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"هذه الفترة لم تعد متاحة، اختر وقتاً آخر\",\n  \"key\": \"slot_unavailable\"\n}"
                    },
                    {
                      "name": "❌ 409 — outside_window",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-12-17",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "09:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يمكن الحجز حتى 30 يوماً قادمة فقط\",\n  \"key\": \"outside_window\"\n}"
                    },
                    {
                      "name": "❌ 409 — cutoff_passed",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن إلغاء/تعديل الموعد قبل أقل من 6 ساعة\",\n  \"key\": \"cutoff_passed\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (date, start_time)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل التاريخ يجب ان يتطابق مع الصيغة Y-m-d. (and 1 more error)\",\n  \"errors\": {\n    \"date\": [\n      \"حقل التاريخ يجب ان يتطابق مع الصيغة Y-m-d.\"\n    ],\n    \"start_time\": [\n      \"الحقل وقت البداية مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — موعد لمستخدم آخر",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/reschedule",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "reschedule"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "cancel-appointment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"cancelled booking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"status_reason\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"cancelled\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"cancelled\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appointments/{id}/cancel",
                      "host": [
                        "{{base_url}}appointments"
                      ],
                      "path": [
                        "{id}",
                        "cancel"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{appointment_id}}",
                          "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nإلغاء الموعد من المتبرع.\n\n## Screens\n- U63 Appointment Details (زر الإلغاء — gap G-03) — user app `424:10294`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10294&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10294&scaling=scale-down&content-scaling=fixed)\n- U63 Appointment Details (زر الإلغاء — gap G-03) — user web `89:470`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-470&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-470&scaling=scale-down&content-scaling=fixed)\n- U64 Pending — user app `424:10410`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10410&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10410&scaling=scale-down&content-scaling=fixed)\n- U64 Pending — user web `89:716`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-716&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-716&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment of current user · الموعد · source: GET {{base_url}}appointments · example: `12`\n\n### Body (form-data)\n- `reason` — optional · nullable|string|max:500 · سبب الإلغاء (modal التأكيد) · example: `ظرف طارئ`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppointmentStatusService::transition($appt, CANCELLED, actor: user, reason)` — يتحقق من `TRANSITIONS` (pending|confirmed → cancelled) + القاطع الزمني.\n2. يضبط `cancelled_at`, `cancel_source=user`, `status_reason` + سجل `appointment_status_logs`.\n3. يحرر السعة (تلقائياً — الإشغال محسوب).\n4. لو كان محتسباً لنداء (`counted_for_appeal`): `confirmed_count--` وإعادة النداء من fulfilled → active.\n\n**Status / state transitions:** `pending|confirmed` → `cancelled` (`CancelSource::USER`).\n\n**Side effects (Laravel-first):**\n- Event `AppointmentCancelled` → `NotifyBranchOfCancellation` (queued) + `ReevaluateAppealCounters`.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `provider_booking_cancelled` | موظفو قسم appointments بالفرع | تحديث على موعد / Booking update | تم تغيير حالة الحجز :code إلى ملغي بطلب المتبرع | appointment_id | P20 |\n| `provider_appeal_status_changed` | موظفو appeals (لو عاد النداء من مستوفى إلى نشط) | تحديث نداء | النداء :code أصبح :status | appeal_id | P6 |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/booking.cancelled` → ar «تم إلغاء الموعد» / en \"Appointment cancelled\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | أقل من `user_change_cutoff_hours` على الموعد | `booking.cutoff_passed` | لا يمكن إلغاء/تعديل الموعد قبل أقل من :hours ساعة | Cannot change within :hours hours of the appointment |\n| 409 | الحالة ليست pending/confirmed | `appointment.invalid_transition` | لا يمكن تنفيذ هذا الإجراء على الموعد في حالته الحالية | This action is not allowed in the current status |\n| 404 | موعد لمستخدم آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "reason",
                          "value": "ظرف طارئ",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · سبب الإلغاء (modal التأكيد)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — cancelled with a reason",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "ظرف طارئ",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إلغاء الموعد\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"date\": \"2026-10-25\",\n    \"day_name\": \"الأحد\",\n    \"time\": \"10:00 ص\",\n    \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\",\n      \"address\": \"حي العليا، طريق الملك فهد 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"status\": {\n      \"value\": \"cancelled\",\n      \"label\": \"ملغي\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"تناول وجبة صحية قبل التبرع وأكثر من شرب الماء، وأحضر هويتك الوطنية.\",\n    \"status_reason\": \"ظرف طارئ\",\n    \"can_change_until\": \"2026-10-25T04:00:00+00:00\",\n    \"reminder_text\": \"سنرسل لك تذكيراً قبل الموعد بـ 24 ساعة\",\n    \"sms_note\": \"ستصلك رسالة SMS برمز الحجز عند تأكيد المركز\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"تعديل الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"فتح الخريطة\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appointment cancelled\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"date\": \"2026-10-25\",\n    \"day_name\": \"Sunday\",\n    \"time\": \"10:00 AM\",\n    \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"district\": \"Olaya\",\n      \"address\": \"Al Olaya, King Fahd Road 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"status\": {\n      \"value\": \"cancelled\",\n      \"label\": \"Cancelled\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"Eat a healthy meal, drink plenty of water and bring your national ID.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-25T04:00:00+00:00\",\n    \"reminder_text\": \"We'll send you a reminder 24 hours before the appointment\",\n    \"sms_note\": \"You'll get an SMS with the booking code once the center confirms\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel appointment\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"Reschedule\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/399/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"Open map\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"View donation\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — cutoff_passed (less than 6 hours)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن إلغاء/تعديل الموعد قبل أقل من 6 ساعة\",\n  \"key\": \"cutoff_passed\"\n}"
                    },
                    {
                      "name": "❌ 409 — invalid_transition (already attended)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "x (501 chars)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يجب ان يكون طول حقل السبب اكبر من 500 حروفٍ/حرفًا.\",\n  \"errors\": {\n    \"reason\": [\n      \"لا يجب ان يكون طول حقل السبب اكبر من 500 حروفٍ/حرفًا.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — موعد لمستخدم آخر",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments/{id}/cancel",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appointment_id}}",
                              "description": "required · appointment of current user · الموعد · source: GET {{base_url}}appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "ظرف طارئ",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `appointments` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"branch cards\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"is_bookable\"); pm.expect(o).to.have.property(\"today_hours\"); } });",
                              "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                              "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"branch_id\", l[0].id); pm.environment.set(\"branch_id\", l[0].id); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `id` المركز (branches/{id}) — البحث عن مراكز التبرع (خريطة/قائمة/المساعد).\n\n## Screens\n- U23 Centers / Map — user app `424:3987`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&scaling=scale-down&content-scaling=fixed)\n- U23 Centers / Map — user web `84:1430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user app `424:6959`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user web `245:7910`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user app `424:7052`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user web `245:8370`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user app `424:7957`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user web `245:8140`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user app `424:8050`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user web `84:1625`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user app `767:751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user web `825:11864`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user app `767:1946`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user web `825:13430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `donation_type_id` — optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `lat` — optional · nullable|numeric|required_with:lng · الموقع · example: `24.7136`\n- `lng` — optional · nullable|numeric|required_with:lat · الموقع · example: `46.6753`\n- `city_id` — optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث بالاسم · example: `فيصل`\n- `available_today` — optional · nullable|boolean · متاح اليوم · example: `1`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `Branch::active()` + جهة نشطة.\n2. فلاتر: `donation_type_id` (pivot)، `city_id`، `search` (الاسم/الحي)، `available_today=1` (يعمل اليوم ولا إغلاق ولا كل الفترات ممتلئة).\n3. الترتيب: بالمسافة (Haversine) لو `lat/lng`، وإلا مدينة المستخدم أولاً ثم الاسم.\n4. لكل فرع: `is_open_now`, `is_open_today`, `is_bookable` (نشط ∧ يقدم النوع ∧ ليس مغلقاً اليوم بالكامل)، `today_hours`, `working_days_text`, `distance_km`, `donation_types[]`.\n5. `meta.count` = «٣ مراكز قريبة» / «العدد».\n\n**Business rules / constraints:**\n- `is_open_now` = اليوم يوم عمل ∧ الوقت بين `opens_at`/`closes_at` ∧ لا `branch_closures` اليوم.\n- زر «اختيار هذا المركز» يتعطل عندما `is_bookable=false` (U28).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lat/lng, donation_type_id, city_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 08:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"King Fahad Medical City — Main Building\",\n        \"district\": \"Sulaimaniyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"King Saud University — KSU Donation Center\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 AM - 06:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"King Khalid University Hospital — Outpatient Clinics\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"Closed now\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Central Blood Bank — Central Blood Bank Donation Center\",\n        \"district\": \"Al Okayshiyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Every day\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n        \"district\": \"Al Shati\",\n        \"city\": \"Dammam\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 04:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"King Fahd Specialist Hospital — Blood Donation Center\",\n        \"district\": \"Al Asafiyah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 07:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n        \"district\": \"Al Rawdah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 AM - 05:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · فلترة (نوع التبرع + المدينة + متاح اليوم)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?donation_type_id=1&city_id=1&available_today=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 4,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 4\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · متبرع مسجّل",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (lng, donation_type_id)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&donation_type_id=99999",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل خط الطول مطلوب إذا توفّر خط العرض. (and 1 more error)\",\n  \"errors\": {\n    \"lng\": [\n      \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\"\n    ],\n    \"donation_type_id\": [\n      \"حقل المحدد نوع التبرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "branches/{id}/available-dates",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"month calendar\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"month\"); pm.expect(o).to.have.property(\"days\"); });",
                              "pm.test(\"days (colored status, today flag)\", () => { const l = pm.response.json().data.days; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"is_today\"); pm.expect(o).to.have.property(\"status\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/available-dates",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "available-dates"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            },
                            {
                              "key": "month",
                              "value": "2026-10",
                              "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `date` (الأيام المتاحة للحجز / إعادة الجدولة — الفرع والنوع نفسهما) — تقويم الشهر بحالة كل يوم لمركز ونوع.\n\n## Screens\n- U33 Select Date — user app `424:8959`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8959&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8959&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date — user app `2251:485`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date — user web `2295:5844`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5844&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5844&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date — user web `84:2888`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2888&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2888&scaling=scale-down&content-scaling=fixed)\n- U153 Select Date (من مركز) — user app `2251:485`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches · example: `1`\n\n### Query params\n- `donation_type_id` — required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `month` — optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي · example: `2026-10`\n\n\n## Behaviour notes\n**Steps:**\n1. محرك الفترات `App\\Services\\Booking\\SlotEngine` (بلا جدول فترات): ساعات اليوم من `branch_working_hours` → تُقسم بـ `branches.slot_duration` (30/60/90/120) → السعة `slot_capacity` أو `branch_slot_overrides.capacity` لنفس (`date`,`start_time`)، و`is_closed=true` يغلقها → يوم في `branch_closures` = مغلق بالكامل.\n2. الإشغال = حجوزات `pending` + `confirmed` في الفترة (الـ pending يحجز مكاناً).\n3. حالة الفترة (`SlotStatus`): `closed` (override/إغلاق/خارج الساعات/بدأت) · `full` (المتبقي 0) · `near_full` (إشغال ≥ 80%) · `available`.\n4. لكل يوم في الشهر: `past` (قبل اليوم) · `outside_window` (بعد `booking_window_days`) · `closed` (ليس يوم عمل/إغلاق) · `full` (كل الفترات ممتلئة/مغلقة) · `available`.\n5. `is_today` لشارة «اليوم».\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (donation_type_id, month) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع غير نشط | `messages.not_found` | العنصر غير موجود | Not found |\n| 409 | الفرع لا يقدّم النوع | `booking.type_not_offered` | نوع التبرع غير متاح في هذا المركز | This donation type isn't offered at this center |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=1&month=2026-10",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "available-dates"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                },
                                {
                                  "key": "month",
                                  "value": "2026-10",
                                  "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"is_bookable\": true,\n      \"availability\": {\n        \"value\": \"available\",\n        \"label\": \"متاح\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    \"month\": \"2026-10\",\n    \"month_label\": \"أكتوبر ٢٠٢٦\",\n    \"days\": [\n      {\n        \"date\": \"2026-10-01\",\n        \"day\": 1,\n        \"date_short\": \"١ أكتوبر\",\n        \"date_text\": \"١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-02\",\n        \"day\": 2,\n        \"date_short\": \"٢ أكتوبر\",\n        \"date_text\": \"٢ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-03\",\n        \"day\": 3,\n        \"date_short\": \"٣ أكتوبر\",\n        \"date_text\": \"٣ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-04\",\n        \"day\": 4,\n        \"date_short\": \"٤ أكتوبر\",\n        \"date_text\": \"٤ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-05\",\n        \"day\": 5,\n        \"date_short\": \"٥ أكتوبر\",\n        \"date_text\": \"٥ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-06\",\n        \"day\": 6,\n        \"date_short\": \"٦ أكتوبر\",\n        \"date_text\": \"٦ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-07\",\n        \"day\": 7,\n        \"date_short\": \"٧ أكتوبر\",\n        \"date_text\": \"٧ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-08\",\n        \"day\": 8,\n        \"date_short\": \"٨ أكتوبر\",\n        \"date_text\": \"٨ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-09\",\n        \"day\": 9,\n        \"date_short\": \"٩ أكتوبر\",\n        \"date_text\": \"٩ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-10\",\n        \"day\": 10,\n        \"date_short\": \"١٠ أكتوبر\",\n        \"date_text\": \"١٠ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-11\",\n        \"day\": 11,\n        \"date_short\": \"١١ أكتوبر\",\n        \"date_text\": \"١١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-12\",\n        \"day\": 12,\n        \"date_short\": \"١٢ أكتوبر\",\n        \"date_text\": \"١٢ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-13\",\n        \"day\": 13,\n        \"date_short\": \"١٣ أكتوبر\",\n        \"date_text\": \"١٣ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-14\",\n        \"day\": 14,\n        \"date_short\": \"١٤ أكتوبر\",\n        \"date_text\": \"١٤ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-15\",\n        \"day\": 15,\n        \"date_short\": \"١٥ أكتوبر\",\n        \"date_text\": \"١٥ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-16\",\n        \"day\": 16,\n        \"date_short\": \"١٦ أكتوبر\",\n        \"date_text\": \"١٦ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-17\",\n        \"day\": 17,\n        \"date_short\": \"١٧ أكتوبر\",\n        \"date_text\": \"١٧ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-18\",\n        \"day\": 18,\n        \"date_short\": \"١٨ أكتوبر\",\n        \"date_text\": \"١٨ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": true,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-19\",\n        \"day\": 19,\n        \"date_short\": \"١٩ أكتوبر\",\n        \"date_text\": \"١٩ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-20\",\n        \"day\": 20,\n        \"date_short\": \"٢٠ أكتوبر\",\n        \"date_text\": \"٢٠ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-21\",\n        \"day\": 21,\n        \"date_short\": \"٢١ أكتوبر\",\n        \"date_text\": \"٢١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-22\",\n        \"day\": 22,\n        \"date_short\": \"٢٢ أكتوبر\",\n        \"date_text\": \"٢٢ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-23\",\n        \"day\": 23,\n        \"date_short\": \"٢٣ أكتوبر\",\n        \"date_text\": \"٢٣ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-24\",\n        \"day\": 24,\n        \"date_short\": \"٢٤ أكتوبر\",\n        \"date_text\": \"٢٤ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-25\",\n        \"day\": 25,\n        \"date_short\": \"٢٥ أكتوبر\",\n        \"date_text\": \"٢٥ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-26\",\n        \"day\": 26,\n        \"date_short\": \"٢٦ أكتوبر\",\n        \"date_text\": \"٢٦ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-27\",\n        \"day\": 27,\n        \"date_short\": \"٢٧ أكتوبر\",\n        \"date_text\": \"٢٧ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-28\",\n        \"day\": 28,\n        \"date_short\": \"٢٨ أكتوبر\",\n        \"date_text\": \"٢٨ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-29\",\n        \"day\": 29,\n        \"date_short\": \"٢٩ أكتوبر\",\n        \"date_text\": \"٢٩ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الخامس\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-30\",\n        \"day\": 30,\n        \"date_short\": \"٣٠ أكتوبر\",\n        \"date_text\": \"٣٠ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الخامس\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-31\",\n        \"day\": 31,\n        \"date_short\": \"٣١ أكتوبر\",\n        \"date_text\": \"٣١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الخامس\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=1&month=2026-10",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "available-dates"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                },
                                {
                                  "key": "month",
                                  "value": "2026-10",
                                  "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"is_bookable\": true,\n      \"availability\": {\n        \"value\": \"available\",\n        \"label\": \"Available\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    \"month\": \"2026-10\",\n    \"month_label\": \"October 2026\",\n    \"days\": [\n      {\n        \"date\": \"2026-10-01\",\n        \"day\": 1,\n        \"date_short\": \"1 October\",\n        \"date_text\": \"1 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-02\",\n        \"day\": 2,\n        \"date_short\": \"2 October\",\n        \"date_text\": \"2 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-03\",\n        \"day\": 3,\n        \"date_short\": \"3 October\",\n        \"date_text\": \"3 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-04\",\n        \"day\": 4,\n        \"date_short\": \"4 October\",\n        \"date_text\": \"4 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-05\",\n        \"day\": 5,\n        \"date_short\": \"5 October\",\n        \"date_text\": \"5 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-06\",\n        \"day\": 6,\n        \"date_short\": \"6 October\",\n        \"date_text\": \"6 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-07\",\n        \"day\": 7,\n        \"date_short\": \"7 October\",\n        \"date_text\": \"7 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-08\",\n        \"day\": 8,\n        \"date_short\": \"8 October\",\n        \"date_text\": \"8 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-09\",\n        \"day\": 9,\n        \"date_short\": \"9 October\",\n        \"date_text\": \"9 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-10\",\n        \"day\": 10,\n        \"date_short\": \"10 October\",\n        \"date_text\": \"10 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-11\",\n        \"day\": 11,\n        \"date_short\": \"11 October\",\n        \"date_text\": \"11 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-12\",\n        \"day\": 12,\n        \"date_short\": \"12 October\",\n        \"date_text\": \"12 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-13\",\n        \"day\": 13,\n        \"date_short\": \"13 October\",\n        \"date_text\": \"13 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-14\",\n        \"day\": 14,\n        \"date_short\": \"14 October\",\n        \"date_text\": \"14 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-15\",\n        \"day\": 15,\n        \"date_short\": \"15 October\",\n        \"date_text\": \"15 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-16\",\n        \"day\": 16,\n        \"date_short\": \"16 October\",\n        \"date_text\": \"16 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-17\",\n        \"day\": 17,\n        \"date_short\": \"17 October\",\n        \"date_text\": \"17 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-18\",\n        \"day\": 18,\n        \"date_short\": \"18 October\",\n        \"date_text\": \"18 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": true,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-19\",\n        \"day\": 19,\n        \"date_short\": \"19 October\",\n        \"date_text\": \"19 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-20\",\n        \"day\": 20,\n        \"date_short\": \"20 October\",\n        \"date_text\": \"20 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-21\",\n        \"day\": 21,\n        \"date_short\": \"21 October\",\n        \"date_text\": \"21 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-22\",\n        \"day\": 22,\n        \"date_short\": \"22 October\",\n        \"date_text\": \"22 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-23\",\n        \"day\": 23,\n        \"date_short\": \"23 October\",\n        \"date_text\": \"23 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-24\",\n        \"day\": 24,\n        \"date_short\": \"24 October\",\n        \"date_text\": \"24 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-25\",\n        \"day\": 25,\n        \"date_short\": \"25 October\",\n        \"date_text\": \"25 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-26\",\n        \"day\": 26,\n        \"date_short\": \"26 October\",\n        \"date_text\": \"26 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-27\",\n        \"day\": 27,\n        \"date_short\": \"27 October\",\n        \"date_text\": \"27 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-28\",\n        \"day\": 28,\n        \"date_short\": \"28 October\",\n        \"date_text\": \"28 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-29\",\n        \"day\": 29,\n        \"date_short\": \"29 October\",\n        \"date_text\": \"29 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 5\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-30\",\n        \"day\": 30,\n        \"date_short\": \"30 October\",\n        \"date_text\": \"30 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 5\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-31\",\n        \"day\": 31,\n        \"date_short\": \"31 October\",\n        \"date_text\": \"31 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 5\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (donation_type_id)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/available-dates",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "available-dates"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                },
                                {
                                  "key": "month",
                                  "value": "2026-10",
                                  "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل نوع التبرع مطلوب.\",\n  \"errors\": {\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — فرع غير نشط / غير موجود",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "available-dates"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                },
                                {
                                  "key": "month",
                                  "value": "2026-10",
                                  "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 409 — الفرع لا يقدّم النوع",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=4",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "available-dates"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                },
                                {
                                  "key": "month",
                                  "value": "2026-10",
                                  "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Conflict",
                          "code": 409,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"نوع التبرع غير متاح في هذا المركز\",\n  \"key\": \"type_not_offered\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "branches/{id}/slots",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"day slots\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"available_count\"); pm.expect(o).to.have.property(\"periods\"); });",
                              "pm.test(\"three periods with slots\", () => { const p = pm.response.json().data.periods; pm.expect(p.map((x) => x.key)).to.eql([\"morning\", \"noon\", \"evening\"]); p.forEach((x) => pm.expect(x.slots).to.be.an(\"array\")); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/slots",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d1}}",
                              "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `start_time` (فترات اليوم المتاحة للحجز / إعادة الجدولة) — فترات يوم محدد مجمعة صباح/ظهر/مساء بحالتها.\n\n## Screens\n- U34 Select Time — user app `424:9175`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9175&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9175&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time — user app `2251:701`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time — user web `2295:6140`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6140&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6140&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time — user web `84:3230`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3230&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3230&scaling=scale-down&content-scaling=fixed)\n- U154 Select Time (من مركز) — user app `2251:701`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches · example: `1`\n\n### Query params\n- `date` — required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates · example: `2026-10-20`\n- `donation_type_id` — required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. محرك الفترات `App\\Services\\Booking\\SlotEngine` (بلا جدول فترات): ساعات اليوم من `branch_working_hours` → تُقسم بـ `branches.slot_duration` (30/60/90/120) → السعة `slot_capacity` أو `branch_slot_overrides.capacity` لنفس (`date`,`start_time`)، و`is_closed=true` يغلقها → يوم في `branch_closures` = مغلق بالكامل.\n2. الإشغال = حجوزات `pending` + `confirmed` في الفترة (الـ pending يحجز مكاناً).\n3. حالة الفترة (`SlotStatus`): `closed` (override/إغلاق/خارج الساعات/بدأت) · `full` (المتبقي 0) · `near_full` (إشغال ≥ 80%) · `available`.\n4. يجمّع الفترات في `periods`: `morning` (قبل 12) · `noon` (12–16) · `evening` (بعد 16) — «الصباح/الظهيرة/العصر والمساء».\n5. `available_count` = «6 وقت متاح».\n6. نفس اليوم: الفترات التي تبدأ قبل `now + same_day_min_lead_minutes` = `closed`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (date, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع غير نشط | `messages.not_found` | العنصر غير موجود | Not found |\n| 409 | الفرع لا يقدّم هذا النوع من التبرع (`donation_type_id`) | `booking.type_not_offered` | نوع التبرع غير متاح في هذا المركز | This donation type isn't offered at this center |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "slots"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "date",
                                  "value": "{{d1}}",
                                  "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"date_short\": \"٢٠ أكتوبر\",\n    \"date_text\": \"٢٠ أكتوبر ٢٠٢٦\",\n    \"weekday\": \"الثلاثاء\",\n    \"available_count\": 21,\n    \"periods\": [\n      {\n        \"key\": \"morning\",\n        \"label\": \"الصباح\",\n        \"slots\": [\n          {\n            \"start_time\": \"08:00\",\n            \"end_time\": \"08:30\",\n            \"label\": \"٨:٠٠ - ٨:٣٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"08:30\",\n            \"end_time\": \"09:00\",\n            \"label\": \"٨:٣٠ - ٩:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"09:00\",\n            \"end_time\": \"09:30\",\n            \"label\": \"٩:٠٠ - ٩:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"09:30\",\n            \"end_time\": \"10:00\",\n            \"label\": \"٩:٣٠ - ١٠:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"10:00\",\n            \"end_time\": \"10:30\",\n            \"label\": \"١٠:٠٠ - ١٠:٣٠ ص\",\n            \"status\": {\n              \"label\": \"قارب الامتلاء\",\n              \"value\": \"near_full\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 1\n          },\n          {\n            \"start_time\": \"10:30\",\n            \"end_time\": \"11:00\",\n            \"label\": \"١٠:٣٠ - ١١:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"11:00\",\n            \"end_time\": \"11:30\",\n            \"label\": \"١١:٠٠ - ١١:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"11:30\",\n            \"end_time\": \"12:00\",\n            \"label\": \"١١:٣٠ ص - ١٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"noon\",\n        \"label\": \"الظهيرة\",\n        \"slots\": [\n          {\n            \"start_time\": \"12:00\",\n            \"end_time\": \"12:30\",\n            \"label\": \"١٢:٠٠ - ١٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"مغلق\",\n              \"value\": \"closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"12:30\",\n            \"end_time\": \"13:00\",\n            \"label\": \"١٢:٣٠ - ١:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:00\",\n            \"end_time\": \"13:30\",\n            \"label\": \"١:٠٠ - ١:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:30\",\n            \"end_time\": \"14:00\",\n            \"label\": \"١:٣٠ - ٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:00\",\n            \"end_time\": \"14:30\",\n            \"label\": \"٢:٠٠ - ٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:30\",\n            \"end_time\": \"15:00\",\n            \"label\": \"٢:٣٠ - ٣:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:00\",\n            \"end_time\": \"15:30\",\n            \"label\": \"٣:٠٠ - ٣:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:30\",\n            \"end_time\": \"16:00\",\n            \"label\": \"٣:٣٠ - ٤:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"evening\",\n        \"label\": \"العصر والمساء\",\n        \"slots\": [\n          {\n            \"start_time\": \"16:00\",\n            \"end_time\": \"16:30\",\n            \"label\": \"٤:٠٠ - ٤:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"16:30\",\n            \"end_time\": \"17:00\",\n            \"label\": \"٤:٣٠ - ٥:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:00\",\n            \"end_time\": \"17:30\",\n            \"label\": \"٥:٠٠ - ٥:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:30\",\n            \"end_time\": \"18:00\",\n            \"label\": \"٥:٣٠ - ٦:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:00\",\n            \"end_time\": \"18:30\",\n            \"label\": \"٦:٠٠ - ٦:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:30\",\n            \"end_time\": \"19:00\",\n            \"label\": \"٦:٣٠ - ٧:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:00\",\n            \"end_time\": \"19:30\",\n            \"label\": \"٧:٠٠ - ٧:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:30\",\n            \"end_time\": \"20:00\",\n            \"label\": \"٧:٣٠ - ٨:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — a day with a full slot (محجوز)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "slots"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "date",
                                  "value": "{{d1}}",
                                  "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"date_short\": \"٢٠ أكتوبر\",\n    \"date_text\": \"٢٠ أكتوبر ٢٠٢٦\",\n    \"weekday\": \"الثلاثاء\",\n    \"available_count\": 21,\n    \"periods\": [\n      {\n        \"key\": \"morning\",\n        \"label\": \"الصباح\",\n        \"slots\": [\n          {\n            \"start_time\": \"08:00\",\n            \"end_time\": \"08:30\",\n            \"label\": \"٨:٠٠ - ٨:٣٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"08:30\",\n            \"end_time\": \"09:00\",\n            \"label\": \"٨:٣٠ - ٩:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"09:00\",\n            \"end_time\": \"09:30\",\n            \"label\": \"٩:٠٠ - ٩:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"09:30\",\n            \"end_time\": \"10:00\",\n            \"label\": \"٩:٣٠ - ١٠:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"10:00\",\n            \"end_time\": \"10:30\",\n            \"label\": \"١٠:٠٠ - ١٠:٣٠ ص\",\n            \"status\": {\n              \"label\": \"قارب الامتلاء\",\n              \"value\": \"near_full\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 1\n          },\n          {\n            \"start_time\": \"10:30\",\n            \"end_time\": \"11:00\",\n            \"label\": \"١٠:٣٠ - ١١:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"11:00\",\n            \"end_time\": \"11:30\",\n            \"label\": \"١١:٠٠ - ١١:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"11:30\",\n            \"end_time\": \"12:00\",\n            \"label\": \"١١:٣٠ ص - ١٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"noon\",\n        \"label\": \"الظهيرة\",\n        \"slots\": [\n          {\n            \"start_time\": \"12:00\",\n            \"end_time\": \"12:30\",\n            \"label\": \"١٢:٠٠ - ١٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"مغلق\",\n              \"value\": \"closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"12:30\",\n            \"end_time\": \"13:00\",\n            \"label\": \"١٢:٣٠ - ١:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:00\",\n            \"end_time\": \"13:30\",\n            \"label\": \"١:٠٠ - ١:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:30\",\n            \"end_time\": \"14:00\",\n            \"label\": \"١:٣٠ - ٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:00\",\n            \"end_time\": \"14:30\",\n            \"label\": \"٢:٠٠ - ٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:30\",\n            \"end_time\": \"15:00\",\n            \"label\": \"٢:٣٠ - ٣:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:00\",\n            \"end_time\": \"15:30\",\n            \"label\": \"٣:٠٠ - ٣:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:30\",\n            \"end_time\": \"16:00\",\n            \"label\": \"٣:٣٠ - ٤:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"evening\",\n        \"label\": \"العصر والمساء\",\n        \"slots\": [\n          {\n            \"start_time\": \"16:00\",\n            \"end_time\": \"16:30\",\n            \"label\": \"٤:٠٠ - ٤:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"16:30\",\n            \"end_time\": \"17:00\",\n            \"label\": \"٤:٣٠ - ٥:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:00\",\n            \"end_time\": \"17:30\",\n            \"label\": \"٥:٠٠ - ٥:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:30\",\n            \"end_time\": \"18:00\",\n            \"label\": \"٥:٣٠ - ٦:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:00\",\n            \"end_time\": \"18:30\",\n            \"label\": \"٦:٠٠ - ٦:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:30\",\n            \"end_time\": \"19:00\",\n            \"label\": \"٦:٣٠ - ٧:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:00\",\n            \"end_time\": \"19:30\",\n            \"label\": \"٧:٠٠ - ٧:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:30\",\n            \"end_time\": \"20:00\",\n            \"label\": \"٧:٣٠ - ٨:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "slots"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "date",
                                  "value": "{{d1}}",
                                  "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"date_short\": \"20 October\",\n    \"date_text\": \"20 October 2026\",\n    \"weekday\": \"Tuesday\",\n    \"available_count\": 21,\n    \"periods\": [\n      {\n        \"key\": \"morning\",\n        \"label\": \"Morning\",\n        \"slots\": [\n          {\n            \"start_time\": \"08:00\",\n            \"end_time\": \"08:30\",\n            \"label\": \"8:00 - 8:30 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"08:30\",\n            \"end_time\": \"09:00\",\n            \"label\": \"8:30 - 9:00 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"09:00\",\n            \"end_time\": \"09:30\",\n            \"label\": \"9:00 - 9:30 AM\",\n            \"status\": {\n              \"label\": \"Booked\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"09:30\",\n            \"end_time\": \"10:00\",\n            \"label\": \"9:30 - 10:00 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"10:00\",\n            \"end_time\": \"10:30\",\n            \"label\": \"10:00 - 10:30 AM\",\n            \"status\": {\n              \"label\": \"Almost full\",\n              \"value\": \"near_full\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 1\n          },\n          {\n            \"start_time\": \"10:30\",\n            \"end_time\": \"11:00\",\n            \"label\": \"10:30 - 11:00 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"11:00\",\n            \"end_time\": \"11:30\",\n            \"label\": \"11:00 - 11:30 AM\",\n            \"status\": {\n              \"label\": \"Booked\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"11:30\",\n            \"end_time\": \"12:00\",\n            \"label\": \"11:30 AM - 12:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"noon\",\n        \"label\": \"Noon\",\n        \"slots\": [\n          {\n            \"start_time\": \"12:00\",\n            \"end_time\": \"12:30\",\n            \"label\": \"12:00 - 12:30 PM\",\n            \"status\": {\n              \"label\": \"Closed\",\n              \"value\": \"closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"12:30\",\n            \"end_time\": \"13:00\",\n            \"label\": \"12:30 - 1:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:00\",\n            \"end_time\": \"13:30\",\n            \"label\": \"1:00 - 1:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:30\",\n            \"end_time\": \"14:00\",\n            \"label\": \"1:30 - 2:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:00\",\n            \"end_time\": \"14:30\",\n            \"label\": \"2:00 - 2:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:30\",\n            \"end_time\": \"15:00\",\n            \"label\": \"2:30 - 3:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:00\",\n            \"end_time\": \"15:30\",\n            \"label\": \"3:00 - 3:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:30\",\n            \"end_time\": \"16:00\",\n            \"label\": \"3:30 - 4:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"evening\",\n        \"label\": \"Afternoon & evening\",\n        \"slots\": [\n          {\n            \"start_time\": \"16:00\",\n            \"end_time\": \"16:30\",\n            \"label\": \"4:00 - 4:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"16:30\",\n            \"end_time\": \"17:00\",\n            \"label\": \"4:30 - 5:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:00\",\n            \"end_time\": \"17:30\",\n            \"label\": \"5:00 - 5:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:30\",\n            \"end_time\": \"18:00\",\n            \"label\": \"5:30 - 6:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:00\",\n            \"end_time\": \"18:30\",\n            \"label\": \"6:00 - 6:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:30\",\n            \"end_time\": \"19:00\",\n            \"label\": \"6:30 - 7:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:00\",\n            \"end_time\": \"19:30\",\n            \"label\": \"7:00 - 7:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:30\",\n            \"end_time\": \"20:00\",\n            \"label\": \"7:30 - 8:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (date, donation_type_id)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/slots",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "slots"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "date",
                                  "value": "{{d1}}",
                                  "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل التاريخ مطلوب. (and 1 more error)\",\n  \"errors\": {\n    \"date\": [\n      \"الحقل التاريخ مطلوب.\"\n    ],\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — فرع غير نشط / غير موجود",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "slots"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "date",
                                  "value": "{{d1}}",
                                  "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 409 — الفرع لا يقدّم النوع",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=4",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [
                                "{id}",
                                "slots"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                                }
                              ],
                              "query": [
                                {
                                  "key": "date",
                                  "value": "{{d1}}",
                                  "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": false
                                }
                              ]
                            }
                          },
                          "status": "Conflict",
                          "code": 409,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"نوع التبرع غير متاح في هذا المركز\",\n  \"key\": \"type_not_offered\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/appointments",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الحجوزات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appointments (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "booking",
              "description": "Flow `booking` — 4 endpoints (sprint 4). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "booking-check",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"check result\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"can_book\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"next_eligible_at\"); pm.expect(o).to.have.property(\"active_appointment\"); });",
                          "pm.test(\"a refusal explains itself\", () => { const d = pm.response.json().data; pm.expect(d.can_book).to.be.a(\"boolean\"); if (!d.can_book) { pm.expect(d.reason).to.have.property(\"key\"); pm.expect(d.reason).to.have.property(\"message\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}booking/check",
                      "host": [
                        "{{base_url}}booking"
                      ],
                      "path": [
                        "check"
                      ],
                      "query": [
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nهل يستطيع المستخدم الحجز الآن؟ ولماذا لا؟\n\n## Screens\n- U21 Donation Overview «ابدأ رحلة العطاء» — user app `424:3791`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview «ابدأ رحلة العطاء» — user web `163:4705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&scaling=scale-down&content-scaling=fixed)\n- U20 Home — «احجز موعد تبرع» / «+ حجز جديد» — user app `760:7273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&scaling=scale-down&content-scaling=fixed)\n- U20 Home — «احجز موعد تبرع» / «+ حجز جديد» — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n- U69 Profile — حجز موعد — user app `424:3148`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3148&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3148&scaling=scale-down&content-scaling=fixed)\n- U69 Profile — حجز موعد — user web `89:1774`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1774&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-1774&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Query params\n- `donation_type_id` — optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يشغّل نفس حراس إنشاء الحجز **عدا الفترة**: حجز قائم؟ فترة انتظار آخر تبرع مكتمل (لنوعه، أو لـ `donation_type_id` المرسل)؟ استبعاد مؤقت/دائم؟ محظور؟\n2. يرجع `can_book` + `reason{key,message}` (أول سبب منع) + `next_eligible_at` + `active_appointment` (lean) لو موجود.\n3. زر «ابدأ» يُعطّل في الواجهة لو `can_book=false` ويعرض `reason.message`.\n\n**Business rules / constraints:**\n- فترة الانتظار تُحسب من `completed_at` لآخر تبرع **مكتمل** + `waiting_days` لنوعه (brief §5.1)؛ الإيقاف `unit_rejected` يحسب من `received_at`؛ `donor_deferred` لا ينشئ فترة انتظار بل `deferred_until`.\n- آخر نتيجة أهلية `not_eligible` لا تمنع الفحص هنا (تمنع عند الإرسال لو رُبطت).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — can_book=true (donor without active booking)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"can_book\": true,\n    \"reason\": null,\n    \"next_eligible_at\": null,\n    \"active_appointment\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — can_book=false has_active (main donor)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"can_book\": false,\n    \"reason\": {\n      \"key\": \"has_active\",\n      \"message\": \"لديك موعد قائم بتاريخ 2026-10-25 — ألغِه أو عدّله أولاً\"\n    },\n    \"next_eligible_at\": null,\n    \"active_appointment\": {\n      \"id\": 399,\n      \"code\": \"BK-2610-044\",\n      \"date\": \"2026-10-25\",\n      \"day_name\": \"الأحد\",\n      \"time\": \"10:00 ص\",\n      \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n      \"branch\": {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\"\n      },\n      \"donation_type\": {\n        \"id\": 1,\n        \"name\": \"دم كامل\"\n      },\n      \"status\": {\n        \"value\": \"confirmed\",\n        \"label\": \"مؤكد\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      },\n      \"action_buttons\": [\n        {\n          \"key\": \"cancel\",\n          \"label\": \"إلغاء الموعد\",\n          \"method\": \"POST\",\n          \"endpoint\": \"appointments/399/cancel\",\n          \"style\": \"danger\",\n          \"confirm\": true,\n          \"requires_reason\": false,\n          \"is_available\": true\n        },\n        {\n          \"key\": \"reschedule\",\n          \"label\": \"تعديل الموعد\",\n          \"method\": \"POST\",\n          \"endpoint\": \"appointments/399/reschedule\",\n          \"style\": \"secondary\",\n          \"confirm\": false,\n          \"requires_reason\": false,\n          \"is_available\": true\n        },\n        {\n          \"key\": \"open_map\",\n          \"label\": \"فتح الخريطة\",\n          \"method\": \"GET\",\n          \"endpoint\": \"geo:24.6948,46.6842\",\n          \"style\": \"link\",\n          \"confirm\": false,\n          \"requires_reason\": false,\n          \"is_available\": true\n        },\n        {\n          \"key\": \"view_donation\",\n          \"label\": \"عرض التبرع\",\n          \"method\": \"GET\",\n          \"endpoint\": \"donations/0?record_type=donation\",\n          \"style\": \"link\",\n          \"confirm\": false,\n          \"requires_reason\": false,\n          \"is_available\": false\n        }\n      ]\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — can_book=false waiting_period",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"can_book\": true,\n    \"reason\": null,\n    \"next_eligible_at\": null,\n    \"active_appointment\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"can_book\": false,\n    \"reason\": {\n      \"key\": \"has_active\",\n      \"message\": \"You have an active appointment on 2026-10-25 — cancel or edit it first\"\n    },\n    \"next_eligible_at\": null,\n    \"active_appointment\": {\n      \"id\": 399,\n      \"code\": \"BK-2610-044\",\n      \"date\": \"2026-10-25\",\n      \"day_name\": \"Sunday\",\n      \"time\": \"10:00 AM\",\n      \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n      \"branch\": {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\"\n      },\n      \"donation_type\": {\n        \"id\": 1,\n        \"name\": \"Whole Blood\"\n      },\n      \"status\": {\n        \"value\": \"confirmed\",\n        \"label\": \"Confirmed\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      },\n      \"action_buttons\": [\n        {\n          \"key\": \"cancel\",\n          \"label\": \"Cancel appointment\",\n          \"method\": \"POST\",\n          \"endpoint\": \"appointments/399/cancel\",\n          \"style\": \"danger\",\n          \"confirm\": true,\n          \"requires_reason\": false,\n          \"is_available\": true\n        },\n        {\n          \"key\": \"reschedule\",\n          \"label\": \"Reschedule\",\n          \"method\": \"POST\",\n          \"endpoint\": \"appointments/399/reschedule\",\n          \"style\": \"secondary\",\n          \"confirm\": false,\n          \"requires_reason\": false,\n          \"is_available\": true\n        },\n        {\n          \"key\": \"open_map\",\n          \"label\": \"Open map\",\n          \"method\": \"GET\",\n          \"endpoint\": \"geo:24.6948,46.6842\",\n          \"style\": \"link\",\n          \"confirm\": false,\n          \"requires_reason\": false,\n          \"is_available\": true\n        },\n        {\n          \"key\": \"view_donation\",\n          \"label\": \"View donation\",\n          \"method\": \"GET\",\n          \"endpoint\": \"donations/0?record_type=donation\",\n          \"style\": \"link\",\n          \"confirm\": false,\n          \"requires_reason\": false,\n          \"is_available\": false\n        }\n      ]\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (donation_type_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check?donation_type_id=9999",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد نوع التبرع غير صالح.\",\n  \"errors\": {\n    \"donation_type_id\": [\n      \"حقل المحدد نوع التبرع غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}booking/check",
                          "host": [
                            "{{base_url}}booking"
                          ],
                          "path": [
                            "check"
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (whereNull deleted_at) · لفحص فترة الانتظار لنوع محدد · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "available-dates",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"month calendar\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"month\"); pm.expect(o).to.have.property(\"days\"); });",
                          "pm.test(\"days (colored status, today flag)\", () => { const l = pm.response.json().data.days; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"is_today\"); pm.expect(o).to.have.property(\"status\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}branches/{id}/available-dates",
                      "host": [
                        "{{base_url}}branches"
                      ],
                      "path": [
                        "{id}",
                        "available-dates"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "1",
                          "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                        }
                      ],
                      "query": [
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                          "disabled": false
                        },
                        {
                          "key": "month",
                          "value": "2026-10",
                          "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nتقويم الشهر بحالة كل يوم لمركز ونوع.\n\n## Screens\n- U33 Select Date — user app `424:8959`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8959&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8959&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date — user app `2251:485`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date — user web `2295:5844`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5844&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5844&scaling=scale-down&content-scaling=fixed)\n- U33 Select Date — user web `84:2888`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2888&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2888&scaling=scale-down&content-scaling=fixed)\n- U153 Select Date (من مركز) — user app `2251:485`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-485&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches · example: `1`\n\n### Query params\n- `donation_type_id` — required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `month` — optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي · example: `2026-10`\n\n\n## Behaviour notes\n**Steps:**\n1. محرك الفترات `App\\Services\\Booking\\SlotEngine` (بلا جدول فترات): ساعات اليوم من `branch_working_hours` → تُقسم بـ `branches.slot_duration` (30/60/90/120) → السعة `slot_capacity` أو `branch_slot_overrides.capacity` لنفس (`date`,`start_time`)، و`is_closed=true` يغلقها → يوم في `branch_closures` = مغلق بالكامل.\n2. الإشغال = حجوزات `pending` + `confirmed` في الفترة (الـ pending يحجز مكاناً).\n3. حالة الفترة (`SlotStatus`): `closed` (override/إغلاق/خارج الساعات/بدأت) · `full` (المتبقي 0) · `near_full` (إشغال ≥ 80%) · `available`.\n4. لكل يوم في الشهر: `past` (قبل اليوم) · `outside_window` (بعد `booking_window_days`) · `closed` (ليس يوم عمل/إغلاق) · `full` (كل الفترات ممتلئة/مغلقة) · `available`.\n5. `is_today` لشارة «اليوم».\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (donation_type_id, month) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع غير نشط | `messages.not_found` | العنصر غير موجود | Not found |\n| 409 | الفرع لا يقدّم النوع | `booking.type_not_offered` | نوع التبرع غير متاح في هذا المركز | This donation type isn't offered at this center |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=1&month=2026-10",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "available-dates"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            },
                            {
                              "key": "month",
                              "value": "2026-10",
                              "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"is_bookable\": true,\n      \"availability\": {\n        \"value\": \"available\",\n        \"label\": \"متاح\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    \"month\": \"2026-10\",\n    \"month_label\": \"أكتوبر ٢٠٢٦\",\n    \"days\": [\n      {\n        \"date\": \"2026-10-01\",\n        \"day\": 1,\n        \"date_short\": \"١ أكتوبر\",\n        \"date_text\": \"١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-02\",\n        \"day\": 2,\n        \"date_short\": \"٢ أكتوبر\",\n        \"date_text\": \"٢ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-03\",\n        \"day\": 3,\n        \"date_short\": \"٣ أكتوبر\",\n        \"date_text\": \"٣ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-04\",\n        \"day\": 4,\n        \"date_short\": \"٤ أكتوبر\",\n        \"date_text\": \"٤ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-05\",\n        \"day\": 5,\n        \"date_short\": \"٥ أكتوبر\",\n        \"date_text\": \"٥ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-06\",\n        \"day\": 6,\n        \"date_short\": \"٦ أكتوبر\",\n        \"date_text\": \"٦ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-07\",\n        \"day\": 7,\n        \"date_short\": \"٧ أكتوبر\",\n        \"date_text\": \"٧ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الأول\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-08\",\n        \"day\": 8,\n        \"date_short\": \"٨ أكتوبر\",\n        \"date_text\": \"٨ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-09\",\n        \"day\": 9,\n        \"date_short\": \"٩ أكتوبر\",\n        \"date_text\": \"٩ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-10\",\n        \"day\": 10,\n        \"date_short\": \"١٠ أكتوبر\",\n        \"date_text\": \"١٠ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-11\",\n        \"day\": 11,\n        \"date_short\": \"١١ أكتوبر\",\n        \"date_text\": \"١١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-12\",\n        \"day\": 12,\n        \"date_short\": \"١٢ أكتوبر\",\n        \"date_text\": \"١٢ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-13\",\n        \"day\": 13,\n        \"date_short\": \"١٣ أكتوبر\",\n        \"date_text\": \"١٣ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-14\",\n        \"day\": 14,\n        \"date_short\": \"١٤ أكتوبر\",\n        \"date_text\": \"١٤ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الثاني\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-15\",\n        \"day\": 15,\n        \"date_short\": \"١٥ أكتوبر\",\n        \"date_text\": \"١٥ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-16\",\n        \"day\": 16,\n        \"date_short\": \"١٦ أكتوبر\",\n        \"date_text\": \"١٦ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-17\",\n        \"day\": 17,\n        \"date_short\": \"١٧ أكتوبر\",\n        \"date_text\": \"١٧ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"منتهي\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-18\",\n        \"day\": 18,\n        \"date_short\": \"١٨ أكتوبر\",\n        \"date_text\": \"١٨ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": true,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-19\",\n        \"day\": 19,\n        \"date_short\": \"١٩ أكتوبر\",\n        \"date_text\": \"١٩ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-20\",\n        \"day\": 20,\n        \"date_short\": \"٢٠ أكتوبر\",\n        \"date_text\": \"٢٠ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-21\",\n        \"day\": 21,\n        \"date_short\": \"٢١ أكتوبر\",\n        \"date_text\": \"٢١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الثالث\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-22\",\n        \"day\": 22,\n        \"date_short\": \"٢٢ أكتوبر\",\n        \"date_text\": \"٢٢ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-23\",\n        \"day\": 23,\n        \"date_short\": \"٢٣ أكتوبر\",\n        \"date_text\": \"٢٣ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-24\",\n        \"day\": 24,\n        \"date_short\": \"٢٤ أكتوبر\",\n        \"date_text\": \"٢٤ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-25\",\n        \"day\": 25,\n        \"date_short\": \"٢٥ أكتوبر\",\n        \"date_text\": \"٢٥ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأحد\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-26\",\n        \"day\": 26,\n        \"date_short\": \"٢٦ أكتوبر\",\n        \"date_text\": \"٢٦ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الاثنين\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-27\",\n        \"day\": 27,\n        \"date_short\": \"٢٧ أكتوبر\",\n        \"date_text\": \"٢٧ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الثلاثاء\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-28\",\n        \"day\": 28,\n        \"date_short\": \"٢٨ أكتوبر\",\n        \"date_text\": \"٢٨ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الأربعاء\",\n        \"week_label\": \"الأسبوع الرابع\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-29\",\n        \"day\": 29,\n        \"date_short\": \"٢٩ أكتوبر\",\n        \"date_text\": \"٢٩ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الخميس\",\n        \"week_label\": \"الأسبوع الخامس\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-30\",\n        \"day\": 30,\n        \"date_short\": \"٣٠ أكتوبر\",\n        \"date_text\": \"٣٠ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"الجمعة\",\n        \"week_label\": \"الأسبوع الخامس\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-31\",\n        \"day\": 31,\n        \"date_short\": \"٣١ أكتوبر\",\n        \"date_text\": \"٣١ أكتوبر ٢٠٢٦\",\n        \"weekday\": \"السبت\",\n        \"week_label\": \"الأسبوع الخامس\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=1&month=2026-10",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "available-dates"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            },
                            {
                              "key": "month",
                              "value": "2026-10",
                              "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"is_bookable\": true,\n      \"availability\": {\n        \"value\": \"available\",\n        \"label\": \"Available\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    \"month\": \"2026-10\",\n    \"month_label\": \"October 2026\",\n    \"days\": [\n      {\n        \"date\": \"2026-10-01\",\n        \"day\": 1,\n        \"date_short\": \"1 October\",\n        \"date_text\": \"1 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-02\",\n        \"day\": 2,\n        \"date_short\": \"2 October\",\n        \"date_text\": \"2 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-03\",\n        \"day\": 3,\n        \"date_short\": \"3 October\",\n        \"date_text\": \"3 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-04\",\n        \"day\": 4,\n        \"date_short\": \"4 October\",\n        \"date_text\": \"4 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-05\",\n        \"day\": 5,\n        \"date_short\": \"5 October\",\n        \"date_text\": \"5 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-06\",\n        \"day\": 6,\n        \"date_short\": \"6 October\",\n        \"date_text\": \"6 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-07\",\n        \"day\": 7,\n        \"date_short\": \"7 October\",\n        \"date_text\": \"7 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 1\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-08\",\n        \"day\": 8,\n        \"date_short\": \"8 October\",\n        \"date_text\": \"8 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-09\",\n        \"day\": 9,\n        \"date_short\": \"9 October\",\n        \"date_text\": \"9 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-10\",\n        \"day\": 10,\n        \"date_short\": \"10 October\",\n        \"date_text\": \"10 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-11\",\n        \"day\": 11,\n        \"date_short\": \"11 October\",\n        \"date_text\": \"11 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-12\",\n        \"day\": 12,\n        \"date_short\": \"12 October\",\n        \"date_text\": \"12 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-13\",\n        \"day\": 13,\n        \"date_short\": \"13 October\",\n        \"date_text\": \"13 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-14\",\n        \"day\": 14,\n        \"date_short\": \"14 October\",\n        \"date_text\": \"14 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 2\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-15\",\n        \"day\": 15,\n        \"date_short\": \"15 October\",\n        \"date_text\": \"15 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-16\",\n        \"day\": 16,\n        \"date_short\": \"16 October\",\n        \"date_text\": \"16 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-17\",\n        \"day\": 17,\n        \"date_short\": \"17 October\",\n        \"date_text\": \"17 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"past\",\n          \"label\": \"Past\",\n          \"color\": \"#98A2B3\",\n          \"bg_color\": \"#F2F4F7\"\n        }\n      },\n      {\n        \"date\": \"2026-10-18\",\n        \"day\": 18,\n        \"date_short\": \"18 October\",\n        \"date_text\": \"18 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": true,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-19\",\n        \"day\": 19,\n        \"date_short\": \"19 October\",\n        \"date_text\": \"19 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-20\",\n        \"day\": 20,\n        \"date_short\": \"20 October\",\n        \"date_text\": \"20 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-21\",\n        \"day\": 21,\n        \"date_short\": \"21 October\",\n        \"date_text\": \"21 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 3\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-22\",\n        \"day\": 22,\n        \"date_short\": \"22 October\",\n        \"date_text\": \"22 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-23\",\n        \"day\": 23,\n        \"date_short\": \"23 October\",\n        \"date_text\": \"23 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-24\",\n        \"day\": 24,\n        \"date_short\": \"24 October\",\n        \"date_text\": \"24 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-25\",\n        \"day\": 25,\n        \"date_short\": \"25 October\",\n        \"date_text\": \"25 October 2026\",\n        \"weekday\": \"Sunday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-26\",\n        \"day\": 26,\n        \"date_short\": \"26 October\",\n        \"date_text\": \"26 October 2026\",\n        \"weekday\": \"Monday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-27\",\n        \"day\": 27,\n        \"date_short\": \"27 October\",\n        \"date_text\": \"27 October 2026\",\n        \"weekday\": \"Tuesday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-28\",\n        \"day\": 28,\n        \"date_short\": \"28 October\",\n        \"date_text\": \"28 October 2026\",\n        \"weekday\": \"Wednesday\",\n        \"week_label\": \"Week 4\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-29\",\n        \"day\": 29,\n        \"date_short\": \"29 October\",\n        \"date_text\": \"29 October 2026\",\n        \"weekday\": \"Thursday\",\n        \"week_label\": \"Week 5\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"date\": \"2026-10-30\",\n        \"day\": 30,\n        \"date_short\": \"30 October\",\n        \"date_text\": \"30 October 2026\",\n        \"weekday\": \"Friday\",\n        \"week_label\": \"Week 5\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        }\n      },\n      {\n        \"date\": \"2026-10-31\",\n        \"day\": 31,\n        \"date_short\": \"31 October\",\n        \"date_text\": \"31 October 2026\",\n        \"weekday\": \"Saturday\",\n        \"week_label\": \"Week 5\",\n        \"is_today\": false,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (donation_type_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/available-dates",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "available-dates"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            },
                            {
                              "key": "month",
                              "value": "2026-10",
                              "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل نوع التبرع مطلوب.\",\n  \"errors\": {\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع غير نشط / غير موجود",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=1",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "available-dates"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            },
                            {
                              "key": "month",
                              "value": "2026-10",
                              "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 409 — الفرع لا يقدّم النوع",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/available-dates?donation_type_id=4",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "available-dates"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز المختار · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id + offered by branch · النوع المختار · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            },
                            {
                              "key": "month",
                              "value": "2026-10",
                              "description": "optional · nullable|date_format:Y-m (default current month) · الشهر الميلادي",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"نوع التبرع غير متاح في هذا المركز\",\n  \"key\": \"type_not_offered\"\n}"
                    }
                  ]
                },
                {
                  "name": "slots",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"day slots\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"available_count\"); pm.expect(o).to.have.property(\"periods\"); });",
                          "pm.test(\"three periods with slots\", () => { const p = pm.response.json().data.periods; pm.expect(p.map((x) => x.key)).to.eql([\"morning\", \"noon\", \"evening\"]); p.forEach((x) => pm.expect(x.slots).to.be.an(\"array\")); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}branches/{id}/slots",
                      "host": [
                        "{{base_url}}branches"
                      ],
                      "path": [
                        "{id}",
                        "slots"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "1",
                          "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                        }
                      ],
                      "query": [
                        {
                          "key": "date",
                          "value": "{{d1}}",
                          "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                          "disabled": false
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                          "disabled": false
                        }
                      ]
                    },
                    "description": "## Purpose\nفترات يوم محدد مجمعة صباح/ظهر/مساء بحالتها.\n\n## Screens\n- U34 Select Time — user app `424:9175`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9175&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9175&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time — user app `2251:701`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time — user web `2295:6140`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6140&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6140&scaling=scale-down&content-scaling=fixed)\n- U34 Select Time — user web `84:3230`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3230&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3230&scaling=scale-down&content-scaling=fixed)\n- U154 Select Time (من مركز) — user app `2251:701`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-701&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches · example: `1`\n\n### Query params\n- `date` — required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates · example: `2026-10-20`\n- `donation_type_id` — required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. محرك الفترات `App\\Services\\Booking\\SlotEngine` (بلا جدول فترات): ساعات اليوم من `branch_working_hours` → تُقسم بـ `branches.slot_duration` (30/60/90/120) → السعة `slot_capacity` أو `branch_slot_overrides.capacity` لنفس (`date`,`start_time`)، و`is_closed=true` يغلقها → يوم في `branch_closures` = مغلق بالكامل.\n2. الإشغال = حجوزات `pending` + `confirmed` في الفترة (الـ pending يحجز مكاناً).\n3. حالة الفترة (`SlotStatus`): `closed` (override/إغلاق/خارج الساعات/بدأت) · `full` (المتبقي 0) · `near_full` (إشغال ≥ 80%) · `available`.\n4. يجمّع الفترات في `periods`: `morning` (قبل 12) · `noon` (12–16) · `evening` (بعد 16) — «الصباح/الظهيرة/العصر والمساء».\n5. `available_count` = «6 وقت متاح».\n6. نفس اليوم: الفترات التي تبدأ قبل `now + same_day_min_lead_minutes` = `closed`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (date, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع غير نشط | `messages.not_found` | العنصر غير موجود | Not found |\n| 409 | الفرع لا يقدّم هذا النوع من التبرع (`donation_type_id`) | `booking.type_not_offered` | نوع التبرع غير متاح في هذا المركز | This donation type isn't offered at this center |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d1}}",
                              "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"date_short\": \"٢٠ أكتوبر\",\n    \"date_text\": \"٢٠ أكتوبر ٢٠٢٦\",\n    \"weekday\": \"الثلاثاء\",\n    \"available_count\": 21,\n    \"periods\": [\n      {\n        \"key\": \"morning\",\n        \"label\": \"الصباح\",\n        \"slots\": [\n          {\n            \"start_time\": \"08:00\",\n            \"end_time\": \"08:30\",\n            \"label\": \"٨:٠٠ - ٨:٣٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"08:30\",\n            \"end_time\": \"09:00\",\n            \"label\": \"٨:٣٠ - ٩:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"09:00\",\n            \"end_time\": \"09:30\",\n            \"label\": \"٩:٠٠ - ٩:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"09:30\",\n            \"end_time\": \"10:00\",\n            \"label\": \"٩:٣٠ - ١٠:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"10:00\",\n            \"end_time\": \"10:30\",\n            \"label\": \"١٠:٠٠ - ١٠:٣٠ ص\",\n            \"status\": {\n              \"label\": \"قارب الامتلاء\",\n              \"value\": \"near_full\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 1\n          },\n          {\n            \"start_time\": \"10:30\",\n            \"end_time\": \"11:00\",\n            \"label\": \"١٠:٣٠ - ١١:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"11:00\",\n            \"end_time\": \"11:30\",\n            \"label\": \"١١:٠٠ - ١١:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"11:30\",\n            \"end_time\": \"12:00\",\n            \"label\": \"١١:٣٠ ص - ١٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"noon\",\n        \"label\": \"الظهيرة\",\n        \"slots\": [\n          {\n            \"start_time\": \"12:00\",\n            \"end_time\": \"12:30\",\n            \"label\": \"١٢:٠٠ - ١٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"مغلق\",\n              \"value\": \"closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"12:30\",\n            \"end_time\": \"13:00\",\n            \"label\": \"١٢:٣٠ - ١:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:00\",\n            \"end_time\": \"13:30\",\n            \"label\": \"١:٠٠ - ١:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:30\",\n            \"end_time\": \"14:00\",\n            \"label\": \"١:٣٠ - ٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:00\",\n            \"end_time\": \"14:30\",\n            \"label\": \"٢:٠٠ - ٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:30\",\n            \"end_time\": \"15:00\",\n            \"label\": \"٢:٣٠ - ٣:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:00\",\n            \"end_time\": \"15:30\",\n            \"label\": \"٣:٠٠ - ٣:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:30\",\n            \"end_time\": \"16:00\",\n            \"label\": \"٣:٣٠ - ٤:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"evening\",\n        \"label\": \"العصر والمساء\",\n        \"slots\": [\n          {\n            \"start_time\": \"16:00\",\n            \"end_time\": \"16:30\",\n            \"label\": \"٤:٠٠ - ٤:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"16:30\",\n            \"end_time\": \"17:00\",\n            \"label\": \"٤:٣٠ - ٥:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:00\",\n            \"end_time\": \"17:30\",\n            \"label\": \"٥:٠٠ - ٥:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:30\",\n            \"end_time\": \"18:00\",\n            \"label\": \"٥:٣٠ - ٦:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:00\",\n            \"end_time\": \"18:30\",\n            \"label\": \"٦:٠٠ - ٦:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:30\",\n            \"end_time\": \"19:00\",\n            \"label\": \"٦:٣٠ - ٧:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:00\",\n            \"end_time\": \"19:30\",\n            \"label\": \"٧:٠٠ - ٧:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:30\",\n            \"end_time\": \"20:00\",\n            \"label\": \"٧:٣٠ - ٨:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a day with a full slot (محجوز)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d1}}",
                              "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"date_short\": \"٢٠ أكتوبر\",\n    \"date_text\": \"٢٠ أكتوبر ٢٠٢٦\",\n    \"weekday\": \"الثلاثاء\",\n    \"available_count\": 21,\n    \"periods\": [\n      {\n        \"key\": \"morning\",\n        \"label\": \"الصباح\",\n        \"slots\": [\n          {\n            \"start_time\": \"08:00\",\n            \"end_time\": \"08:30\",\n            \"label\": \"٨:٠٠ - ٨:٣٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"08:30\",\n            \"end_time\": \"09:00\",\n            \"label\": \"٨:٣٠ - ٩:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"09:00\",\n            \"end_time\": \"09:30\",\n            \"label\": \"٩:٠٠ - ٩:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"09:30\",\n            \"end_time\": \"10:00\",\n            \"label\": \"٩:٣٠ - ١٠:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"10:00\",\n            \"end_time\": \"10:30\",\n            \"label\": \"١٠:٠٠ - ١٠:٣٠ ص\",\n            \"status\": {\n              \"label\": \"قارب الامتلاء\",\n              \"value\": \"near_full\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 1\n          },\n          {\n            \"start_time\": \"10:30\",\n            \"end_time\": \"11:00\",\n            \"label\": \"١٠:٣٠ - ١١:٠٠ ص\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"11:00\",\n            \"end_time\": \"11:30\",\n            \"label\": \"١١:٠٠ - ١١:٣٠ ص\",\n            \"status\": {\n              \"label\": \"محجوز\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"11:30\",\n            \"end_time\": \"12:00\",\n            \"label\": \"١١:٣٠ ص - ١٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"noon\",\n        \"label\": \"الظهيرة\",\n        \"slots\": [\n          {\n            \"start_time\": \"12:00\",\n            \"end_time\": \"12:30\",\n            \"label\": \"١٢:٠٠ - ١٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"مغلق\",\n              \"value\": \"closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"12:30\",\n            \"end_time\": \"13:00\",\n            \"label\": \"١٢:٣٠ - ١:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:00\",\n            \"end_time\": \"13:30\",\n            \"label\": \"١:٠٠ - ١:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:30\",\n            \"end_time\": \"14:00\",\n            \"label\": \"١:٣٠ - ٢:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:00\",\n            \"end_time\": \"14:30\",\n            \"label\": \"٢:٠٠ - ٢:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:30\",\n            \"end_time\": \"15:00\",\n            \"label\": \"٢:٣٠ - ٣:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:00\",\n            \"end_time\": \"15:30\",\n            \"label\": \"٣:٠٠ - ٣:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:30\",\n            \"end_time\": \"16:00\",\n            \"label\": \"٣:٣٠ - ٤:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"evening\",\n        \"label\": \"العصر والمساء\",\n        \"slots\": [\n          {\n            \"start_time\": \"16:00\",\n            \"end_time\": \"16:30\",\n            \"label\": \"٤:٠٠ - ٤:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"16:30\",\n            \"end_time\": \"17:00\",\n            \"label\": \"٤:٣٠ - ٥:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:00\",\n            \"end_time\": \"17:30\",\n            \"label\": \"٥:٠٠ - ٥:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:30\",\n            \"end_time\": \"18:00\",\n            \"label\": \"٥:٣٠ - ٦:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:00\",\n            \"end_time\": \"18:30\",\n            \"label\": \"٦:٠٠ - ٦:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:30\",\n            \"end_time\": \"19:00\",\n            \"label\": \"٦:٣٠ - ٧:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:00\",\n            \"end_time\": \"19:30\",\n            \"label\": \"٧:٠٠ - ٧:٣٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:30\",\n            \"end_time\": \"20:00\",\n            \"label\": \"٧:٣٠ - ٨:٠٠ م\",\n            \"status\": {\n              \"label\": \"متاح\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d1}}",
                              "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"date_short\": \"20 October\",\n    \"date_text\": \"20 October 2026\",\n    \"weekday\": \"Tuesday\",\n    \"available_count\": 21,\n    \"periods\": [\n      {\n        \"key\": \"morning\",\n        \"label\": \"Morning\",\n        \"slots\": [\n          {\n            \"start_time\": \"08:00\",\n            \"end_time\": \"08:30\",\n            \"label\": \"8:00 - 8:30 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"08:30\",\n            \"end_time\": \"09:00\",\n            \"label\": \"8:30 - 9:00 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"09:00\",\n            \"end_time\": \"09:30\",\n            \"label\": \"9:00 - 9:30 AM\",\n            \"status\": {\n              \"label\": \"Booked\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"09:30\",\n            \"end_time\": \"10:00\",\n            \"label\": \"9:30 - 10:00 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"10:00\",\n            \"end_time\": \"10:30\",\n            \"label\": \"10:00 - 10:30 AM\",\n            \"status\": {\n              \"label\": \"Almost full\",\n              \"value\": \"near_full\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 1\n          },\n          {\n            \"start_time\": \"10:30\",\n            \"end_time\": \"11:00\",\n            \"label\": \"10:30 - 11:00 AM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"11:00\",\n            \"end_time\": \"11:30\",\n            \"label\": \"11:00 - 11:30 AM\",\n            \"status\": {\n              \"label\": \"Booked\",\n              \"value\": \"full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"11:30\",\n            \"end_time\": \"12:00\",\n            \"label\": \"11:30 AM - 12:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"noon\",\n        \"label\": \"Noon\",\n        \"slots\": [\n          {\n            \"start_time\": \"12:00\",\n            \"end_time\": \"12:30\",\n            \"label\": \"12:00 - 12:30 PM\",\n            \"status\": {\n              \"label\": \"Closed\",\n              \"value\": \"closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"remaining\": 0\n          },\n          {\n            \"start_time\": \"12:30\",\n            \"end_time\": \"13:00\",\n            \"label\": \"12:30 - 1:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:00\",\n            \"end_time\": \"13:30\",\n            \"label\": \"1:00 - 1:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 4\n          },\n          {\n            \"start_time\": \"13:30\",\n            \"end_time\": \"14:00\",\n            \"label\": \"1:30 - 2:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:00\",\n            \"end_time\": \"14:30\",\n            \"label\": \"2:00 - 2:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"14:30\",\n            \"end_time\": \"15:00\",\n            \"label\": \"2:30 - 3:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:00\",\n            \"end_time\": \"15:30\",\n            \"label\": \"3:00 - 3:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"15:30\",\n            \"end_time\": \"16:00\",\n            \"label\": \"3:30 - 4:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      },\n      {\n        \"key\": \"evening\",\n        \"label\": \"Afternoon & evening\",\n        \"slots\": [\n          {\n            \"start_time\": \"16:00\",\n            \"end_time\": \"16:30\",\n            \"label\": \"4:00 - 4:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"16:30\",\n            \"end_time\": \"17:00\",\n            \"label\": \"4:30 - 5:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:00\",\n            \"end_time\": \"17:30\",\n            \"label\": \"5:00 - 5:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"17:30\",\n            \"end_time\": \"18:00\",\n            \"label\": \"5:30 - 6:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:00\",\n            \"end_time\": \"18:30\",\n            \"label\": \"6:00 - 6:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"18:30\",\n            \"end_time\": \"19:00\",\n            \"label\": \"6:30 - 7:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:00\",\n            \"end_time\": \"19:30\",\n            \"label\": \"7:00 - 7:30 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          },\n          {\n            \"start_time\": \"19:30\",\n            \"end_time\": \"20:00\",\n            \"label\": \"7:30 - 8:00 PM\",\n            \"status\": {\n              \"label\": \"Available\",\n              \"value\": \"available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"remaining\": 5\n          }\n        ]\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (date, donation_type_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/slots",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d1}}",
                              "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل التاريخ مطلوب. (and 1 more error)\",\n  \"errors\": {\n    \"date\": [\n      \"الحقل التاريخ مطلوب.\"\n    ],\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع غير نشط / غير موجود",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=1",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d1}}",
                              "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 409 — الفرع لا يقدّم النوع",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches/{id}/slots?date=2026-10-20&donation_type_id=4",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:branches,id (active) · المركز · source: GET {{base_url}}branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d1}}",
                              "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ المختار · source: GET {{base_url}}branches/{id}/available-dates",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "required · required|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"نوع التبرع غير متاح في هذا المركز\",\n  \"key\": \"type_not_offered\"\n}"
                    }
                  ]
                },
                {
                  "name": "create-appointment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"user_token\") }; pm.sendRequest({ url: base + \"appointments?tab=upcoming\", method: \"GET\", header: h }, (e, r) => { if (e || r.code !== 200) return; r.json().data.data.filter((a) => [\"pending\", \"confirmed\"].includes(a.status.value)).forEach((a) => pm.sendRequest({ url: base + \"appointments/\" + a.id + \"/cancel\", method: \"POST\", header: h })); });",
                          "}",
                          "{",
                          "{ const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"user_token\") }; const put = (k, v) => { pm.collectionVariables.set(k, v); pm.environment.set(k, v); }; const branchId = 1; const typeId = 1; pm.sendRequest({ url: base + \"branches/\" + branchId + \"/available-dates?donation_type_id=\" + typeId, method: \"GET\", header: h }, (e1, r1) => { if (e1 || r1.code !== 200) return; const today = new Date().toISOString().slice(0, 10); const day = r1.json().data.days.find((d) => d.status.value === \"available\" && d.date > today); if (!day) return; pm.sendRequest({ url: base + \"branches/\" + branchId + \"/slots?donation_type_id=\" + typeId + \"&date=\" + day.date, method: \"GET\", header: h }, (e2, r2) => { if (e2 || r2.code !== 200) return; const slots = [].concat(...r2.json().data.periods.map((x) => x.slots)).filter((x) => x.status.value === \"available\"); if (!slots.length) return; const slot = slots[0] || slots[0]; put(\"booking_date\", day.date); put(\"booking_start\", slot.start_time); }); }); }",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"pending (C1)\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"pending\"));",
                          "pm.test(\"booking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"time\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"purpose\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"reminder_text\"); pm.expect(o).to.have.property(\"sms_note\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"BK- code\", () => pm.expect(pm.response.json().data.code).to.match(/^BK-/));",
                          "{ const id = pm.response.json().data.id; if (id) { pm.collectionVariables.set(\"appointment_id\", id); pm.environment.set(\"appointment_id\", id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appointments",
                      "host": [
                        "{{base_url}}appointments"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nإنشاء حجز (مباشر أو استجابة لنداء) بحالة قيد الانتظار.\n\n## Screens\n- U35 Review Booking — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — user app `2251:820`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-820&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-820&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — user web `2051:7892`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7892&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7892&scaling=scale-down&content-scaling=fixed)\n- U36 Booking Confirmation (C1 — pending) — user app `424:12509`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12509&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12509&scaling=scale-down&content-scaling=fixed)\n- U36 Booking Confirmation (C1 — pending) — user app `2251:984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-984&scaling=scale-down&content-scaling=fixed)\n- U36 Booking Confirmation (C1 — pending) — user web `2295:6517`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6517&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6517&scaling=scale-down&content-scaling=fixed)\n- U36 Booking Confirmation (C1 — pending) — user web `84:3998`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3998&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-3998&scaling=scale-down&content-scaling=fixed)\n- U155 Review (من مركز) — user app `2251:820`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-820&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-820&scaling=scale-down&content-scaling=fixed)\n- U156 Confirmation (من مركز) — user app `2251:984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-984&scaling=scale-down&content-scaling=fixed)\n- U40 Appeal Response → متابعة الحجز — user app `424:9553`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9553&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9553&scaling=scale-down&content-scaling=fixed)\n- U40 Appeal Response → متابعة الحجز — user web `84:5342`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-5342&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-5342&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n- Rate limit: `throttle:booking` (10/min per user)\n\n## Parameters & fields\n### Body (form-data)\n- `branch_id` — required_without:appeal_id · required_without:appeal_id|integer|exists:branches,id (whereNull deleted_at) · المركز · source: GET {{base_url}}branches · example: `1`\n- `donation_type_id` — required_without:appeal_id · required_without:appeal_id|integer|exists:donation_types,id (whereNull deleted_at) · نوع التبرع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `purpose` — required_without:appeal_id · required_without:appeal_id|Rule::enum(DonationPurpose::class) · طبيعة التبرع · source: GET {{base_url}}lookups/donation-purposes · example: `routine`\n- `date` — required · required|date_format:Y-m-d|after_or_equal:today · التاريخ · source: GET {{base_url}}branches/{id}/available-dates · example: `2026-10-20`\n- `start_time` — required · required|date_format:H:i · بداية الفترة · source: GET {{base_url}}branches/{id}/slots · example: `08:00`\n- `appeal_id` — optional · nullable|integer|exists:appeals,id · عند الاستجابة لنداء · source: GET {{base_url}}appeals · example: `1`\n- `eligibility_assessment_id` — optional · nullable|integer|exists:eligibility_assessments,id,user_id,{auth} · نتيجة اختبار الأهلية (اختياري) · source: POST {{base_url}}eligibility/assessments · example: `9`\n\n\n## Behaviour notes\n**Steps:**\n1. لو `appeal_id`: يحمّل النداء ويأخذ `branch_id` و`donation_type_id` **منه** (يتجاهل المرسل)، `source=appeal`، `purpose=urgent` افتراضياً؛ النداء يجب أن يكون `active` و`response_state=open` والفصيلة متوافقة (`blood_compatibilities`).\n2. حراس المستخدم (BookingEligibilityService): حجز قائم واحد · فترة انتظار · استبعاد مؤقت/دائم · محظور.\n3. حراس الفرع: نشط + جهته نشطة + يقدّم النوع.\n4. الأهلية: لو `eligibility_assessment_id` مرسل → يجب أن يكون للمستخدم، غير مستهلك، و`result != not_eligible`؛ يُعلَّم `consumed_at`. (الاختبار اختياري؛ «غير مؤهل» يمنع فقط لو أُجري وارتبط — brief §5.1).\n5. الفترة: داخل transaction بـ `lockForUpdate` على صف الفرع → `SlotEngine::remaining(branch, date, start_time) > 0` وإلا 409 `slot_unavailable`؛ نافذة الحجز + نفس اليوم.\n6. ينشئ `appointments` (`status=pending`, `code` BK- من Observer, `starts_at/ends_at` من الفترة, `terms_accepted_at=now` — **الإرسال = الإقرار**, لا حقل `terms`) + `appointment_status_logs` (— → pending, actor=user).\n7. يرجع `AppointmentResource` بحالة **pending** (C1) + رسالة «تم استلام حجزك — بانتظار تأكيد المركز».\n\n**Business rules / constraints:**\n- C1: الحجز لا يُؤكد تلقائياً — البنك يؤكد؛ شاشة النجاح تعرض الحالة «قيد الانتظار».\n- C4: حجز قائم واحد فقط للمستخدم.\n- الحجز غير المؤكد قبل `auto_cancel_unconfirmed_hours` (2) من موعده يُلغى تلقائياً (job — Sprint 4).\n- استجابة النداء = حجز مرتبط؛ العدّ عند **التأكيد** لا الإنشاء؛ إن بلغ (`confirmed_count` + pending المرتبطة) ≥ المطلوب + `appeal_response_overflow` → `response_state=capped`.\n\n**Status / state transitions:** `AppointmentStatus`: — → `pending`.\n\n**Side effects (Laravel-first):**\n- Event `AppointmentCreated` → listeners: `SendAppointmentCreatedNotifications` (queued).\n- If `appeal_id`: `AppealResponseCapService::reevaluate($appeal)`.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appointment_created` | المستخدم | تم استلام طلب حجزك / Booking received | طلب موعدك في :branch يوم :date الساعة :time بانتظار تأكيد المركز | appointment_id | U63/U64 |\n| `provider_new_booking` | موظفو قسم appointments بالفرع + owner | حجز جديد / New booking | تم تسجيل حجز جديد :code — :type — :date :time | appointment_id | P20 |\n| `provider_appeal_response` | موظفو قسم appeals (لو `appeal_id`) | استجابة جديدة على نداء | استجاب متبرع جديد (:donor_code) للنداء :code | appeal_id, appointment_id | P6 |\n\n> Postman: the pre-request cancels a live booking the donor still holds (a new booking needs none) and publishes the first free day + slot of branch 1 as the collection variables `{{booking_date}}` / `{{booking_start}}` (the date / start_time fields; if the lookup finds nothing, the defaults of the environment are sent); `eligibility_assessment_id` is the one saved by eligibility/assessments; `appeal_id` is switched off (enable it to book as an appeal response).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/booking.created` → ar «تم استلام حجزك — بانتظار تأكيد المركز» / en \"Booking received — awaiting the center's confirmation\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id, donation_type_id, purpose, date, start_time) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | لدى المستخدم حجز pending/confirmed آخر (حجز قائم واحد فقط — C4) | `booking.has_active` | لديك موعد قائم بتاريخ :date — ألغِه أو عدّله أولاً | You have an active appointment on :date — cancel or edit it first |\n| 409 | فترة الانتظار لنوع **آخر تبرع مكتمل** لم تنتهِ | `booking.waiting_period` | يمكنك التبرع مرة أخرى بعد :date | You can donate again after :date |\n| 409 | `users.deferred_until` في المستقبل | `booking.deferred_temporary` | لا يمكنك الحجز حتى :date | You cannot book until :date |\n| 409 | `permanently_deferred=true` | `booking.deferred_permanent` | لا يمكنك حجز موعد تبرع، يرجى مراجعة المركز | You cannot book a donation, please contact the center |\n| 409 | الفترة ممتلئة (pending+confirmed ≥ السعة) أو مغلقة أو خارج ساعات العمل أو يوم إغلاق | `booking.slot_unavailable` | هذه الفترة لم تعد متاحة، اختر وقتاً آخر | This slot is no longer available |\n| 409 | التاريخ بعد `booking_window_days` (30) | `booking.outside_window` | يمكن الحجز حتى :days يوماً قادمة فقط | Booking is allowed up to :days days ahead |\n| 409 | نفس اليوم وبداية الفترة أقل من `same_day_min_lead_minutes` (60) | `booking.too_soon` | اختر فترة تبدأ بعد :minutes دقيقة على الأقل | Pick a slot starting at least :minutes minutes from now |\n| 409 | الفرع/الجهة غير نشط | `booking.branch_unavailable` | المركز غير متاح للحجز حالياً | This center is not accepting bookings |\n| 409 | الفرع لا يقدّم النوع | `booking.type_not_offered` | نوع التبرع غير متاح في هذا المركز | This donation type isn't offered at this center |\n| 409 | الأهلية المرتبطة `not_eligible` | `booking.not_eligible` | نتيجة اختبار الأهلية: غير مؤهل حالياً — :reason | Eligibility result: not eligible — :reason |\n| 409 | النداء ليس active | `appeal.not_active` | هذا النداء لم يعد يستقبل استجابات | This appeal no longer accepts responses |\n| 409 | النداء `capped` | `appeal.responses_capped` | اكتمل عدد المستجيبين المطلوب مؤقتاً — بانتظار تأكيد المواعيد | Required responders reached for now — awaiting confirmations |\n| 409 | فصيلة غير متوافقة | `appeal.incompatible` | فصيلتك غير متوافقة مع هذا النداء | Your blood type isn't compatible with this appeal |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n| 429 | تجاوز 10 طلبات حجز/دقيقة (`throttle:booking`) | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "required_without:appeal_id · required_without:appeal_id|integer|exists:branches,id (whereNull deleted_at) · المركز · source: GET {{base_url}}branches"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "type": "text",
                          "description": "required_without:appeal_id · required_without:appeal_id|integer|exists:donation_types,id (whereNull deleted_at) · نوع التبرع · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "purpose",
                          "value": "routine",
                          "type": "text",
                          "description": "required_without:appeal_id · required_without:appeal_id|Rule::enum(DonationPurpose::class) · طبيعة التبرع · source: GET {{base_url}}lookups/donation-purposes"
                        },
                        {
                          "key": "date",
                          "value": "{{booking_date}}",
                          "type": "text",
                          "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ · source: GET {{base_url}}branches/{id}/available-dates"
                        },
                        {
                          "key": "start_time",
                          "value": "{{booking_start}}",
                          "type": "text",
                          "description": "required · required|date_format:H:i · بداية الفترة · source: GET {{base_url}}branches/{id}/slots"
                        },
                        {
                          "key": "appeal_id",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|integer|exists:appeals,id · عند الاستجابة لنداء · source: GET {{base_url}}appeals",
                          "disabled": true
                        },
                        {
                          "key": "eligibility_assessment_id",
                          "value": "{{eligibility_assessment_id}}",
                          "type": "text",
                          "description": "optional · nullable|integer|exists:eligibility_assessments,id,user_id,{auth} · نتيجة اختبار الأهلية (اختياري) · source: POST {{base_url}}eligibility/assessments"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — direct booking KFSH (donor without active booking)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم استلام حجزك — بانتظار تأكيد المركز\",\n  \"data\": {\n    \"id\": 465,\n    \"code\": \"BK-2610-106\",\n    \"date\": \"2026-10-20\",\n    \"day_name\": \"الثلاثاء\",\n    \"time\": \"08:00 ص\",\n    \"starts_at\": \"2026-10-20T08:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\",\n      \"city\": \"الرياض\",\n      \"address\": \"حي العليا، طريق الملك فهد 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"status\": {\n      \"value\": \"pending\",\n      \"label\": \"قيد الانتظار\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"تناول وجبة صحية قبل التبرع وأكثر من شرب الماء، وأحضر هويتك الوطنية.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-20T02:00:00+00:00\",\n    \"reminder_text\": \"سنرسل لك تذكيراً قبل الموعد بـ 24 ساعة\",\n    \"sms_note\": \"ستصلك رسالة SMS برمز الحجز عند تأكيد المركز\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/465/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"تعديل الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/465/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"فتح الخريطة\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Booking received — awaiting the center's confirmation\",\n  \"data\": {\n    \"id\": 466,\n    \"code\": \"BK-2610-106\",\n    \"date\": \"2026-10-20\",\n    \"day_name\": \"Tuesday\",\n    \"time\": \"08:00 AM\",\n    \"starts_at\": \"2026-10-20T08:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"district\": \"Olaya\",\n      \"city\": null,\n      \"address\": \"Al Olaya, King Fahd Road 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"status\": {\n      \"value\": \"pending\",\n      \"label\": \"Pending\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"preparation_note\": \"Eat a healthy meal, drink plenty of water and bring your national ID.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-20T02:00:00+00:00\",\n    \"reminder_text\": \"We'll send you a reminder 24 hours before the appointment\",\n    \"sms_note\": \"You'll get an SMS with the booking code once the center confirms\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel appointment\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/466/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"Reschedule\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/466/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"Open map\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"View donation\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — appeal response (appeal_id=1)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "appeal_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم استلام حجزك — بانتظار تأكيد المركز\",\n  \"data\": {\n    \"id\": 467,\n    \"code\": \"BK-2610-106\",\n    \"date\": \"2026-10-20\",\n    \"day_name\": \"الثلاثاء\",\n    \"time\": \"08:00 ص\",\n    \"starts_at\": \"2026-10-20T08:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\",\n      \"city\": \"الرياض\",\n      \"address\": \"حي العليا، طريق الملك فهد 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"status\": {\n      \"value\": \"pending\",\n      \"label\": \"قيد الانتظار\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"purpose\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"استجابة لنداء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"preparation_note\": \"تناول وجبة صحية قبل التبرع وأكثر من شرب الماء، وأحضر هويتك الوطنية.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-20T02:00:00+00:00\",\n    \"reminder_text\": \"سنرسل لك تذكيراً قبل الموعد بـ 24 ساعة\",\n    \"sms_note\": \"ستصلك رسالة SMS برمز الحجز عند تأكيد المركز\",\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/467/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"reschedule\",\n        \"label\": \"تعديل الموعد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"appointments/467/reschedule\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"open_map\",\n        \"label\": \"فتح الخريطة\",\n        \"method\": \"GET\",\n        \"endpoint\": \"geo:24.6948,46.6842\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0?record_type=donation\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — missing start_time",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل وقت البداية مطلوب.\",\n  \"errors\": {\n    \"start_time\": [\n      \"الحقل وقت البداية مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — has_active (main donor)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لديك موعد قائم بتاريخ 2026-10-25 — ألغِه أو عدّله أولاً\",\n  \"key\": \"has_active\"\n}"
                    },
                    {
                      "name": "❌ 409 — slot_unavailable (full slot)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "09:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"هذه الفترة لم تعد متاحة، اختر وقتاً آخر\",\n  \"key\": \"slot_unavailable\"\n}"
                    },
                    {
                      "name": "❌ 409 — waiting_period",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يمكنك التبرع مرة أخرى بعد 2027-01-06\",\n  \"key\": \"waiting_period\"\n}"
                    },
                    {
                      "name": "❌ 409 — outside_window",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-12-17",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يمكن الحجز حتى 30 يوماً قادمة فقط\",\n  \"key\": \"outside_window\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    },
                    {
                      "name": "❌ 429 — تجاوز 10 طلبات حجز/دقيقة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "purpose",
                              "value": "routine",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 59\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `booking` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-purposes",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); pm.expect(o).to.have.property(\"description\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-purposes",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-purposes"
                          ]
                        },
                        "description": "## Purpose\nمصدر `purpose` (غرض التبرع: روتيني / إنقاذ حياة / عاجل) — وخطوة «نوع التبرع» في المساعد — قائمة طبيعة التبرع — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U24 Select Donation Purpose — user app `760:10154`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-10154&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-10154&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user app `2251:185`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-185&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-185&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user web `2295:6712`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6712&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6712&scaling=scale-down&content-scaling=fixed)\n- U24 Select Donation Purpose — user web `825:10661`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10661&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10661&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\DonationPurpose` بالترتيب المعرّف في الـ enum عبر `DonationPurpose::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `description` من `lang/*/enums.php` → `donation_purpose_descriptions`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-purposes",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-purposes"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\",\n      \"tag\": \"تبرع منتظم\",\n      \"description\": \"تبرع عادي غير مرتبط بحالة طارئة\"\n    },\n    {\n      \"value\": \"life_saving\",\n      \"label\": \"إنقاذ حياة\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"tag\": \"حالة حرجة\",\n      \"description\": \"تبرع موجه لحالة تحتاج إلى متبرعين للمساعدة في إنقاذ حياة\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"tag\": \"استجابة سريعة\",\n      \"description\": \"تبرع مرتبط بحالة عاجلة تحتاج إلى استجابة سريعة\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"branch cards\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"is_bookable\"); pm.expect(o).to.have.property(\"today_hours\"); } });",
                              "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                              "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"branch_id\", l[0].id); pm.environment.set(\"branch_id\", l[0].id); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}branches",
                          "host": [
                            "{{base_url}}branches"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|required_with:lng · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|required_with:lat · الموقع",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "available_today",
                              "value": "1",
                              "description": "optional · nullable|boolean · متاح اليوم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `id` المركز (branches/{id}) — البحث عن مراكز التبرع (خريطة/قائمة/المساعد).\n\n## Screens\n- U23 Centers / Map — user app `424:3987`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3987&scaling=scale-down&content-scaling=fixed)\n- U23 Centers / Map — user web `84:1430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1430&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user app `424:6959`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6959&scaling=scale-down&content-scaling=fixed)\n- U26 Map v02 — KFSH card — user web `245:7910`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7910&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user app `424:7052`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7052&scaling=scale-down&content-scaling=fixed)\n- U27 Map v03 — user web `245:8370`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8370&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user app `424:7957`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7957&scaling=scale-down&content-scaling=fixed)\n- U28 Map v04 — مغلق — user web `245:8140`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-8140&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user app `424:8050`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8050&scaling=scale-down&content-scaling=fixed)\n- U29 Centers / List — user web `84:1625`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-1625&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user app `767:751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-751&scaling=scale-down&content-scaling=fixed)\n- U102 Assistant / Recommendations — user web `825:11864`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-11864&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user app `767:1946`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1946&scaling=scale-down&content-scaling=fixed)\n- U114 Assistant / Recommended Centers — user web `825:13430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-13430&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `donation_type_id` — optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `lat` — optional · nullable|numeric|required_with:lng · الموقع · example: `24.7136`\n- `lng` — optional · nullable|numeric|required_with:lat · الموقع · example: `46.6753`\n- `city_id` — optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث بالاسم · example: `فيصل`\n- `available_today` — optional · nullable|boolean · متاح اليوم · example: `1`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `Branch::active()` + جهة نشطة.\n2. فلاتر: `donation_type_id` (pivot)، `city_id`، `search` (الاسم/الحي)، `available_today=1` (يعمل اليوم ولا إغلاق ولا كل الفترات ممتلئة).\n3. الترتيب: بالمسافة (Haversine) لو `lat/lng`، وإلا مدينة المستخدم أولاً ثم الاسم.\n4. لكل فرع: `is_open_now`, `is_open_today`, `is_bookable` (نشط ∧ يقدم النوع ∧ ليس مغلقاً اليوم بالكامل)، `today_hours`, `working_days_text`, `distance_km`, `donation_types[]`.\n5. `meta.count` = «٣ مراكز قريبة» / «العدد».\n\n**Business rules / constraints:**\n- `is_open_now` = اليوم يوم عمل ∧ الوقت بين `opens_at`/`closes_at` ∧ لا `branch_closures` اليوم.\n- زر «اختيار هذا المركز» يتعطل عندما `is_bookable=false` (U28).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lat/lng, donation_type_id, city_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 08:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"King Fahad Medical City — Main Building\",\n        \"district\": \"Sulaimaniyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"King Saud University — KSU Donation Center\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 AM - 06:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"King Khalid University Hospital — Outpatient Clinics\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"Closed now\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Central Blood Bank — Central Blood Bank Donation Center\",\n        \"district\": \"Al Okayshiyah\",\n        \"city\": \"Riyadh\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 AM - 09:00 PM\",\n        \"working_days_text\": \"Every day\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"Double Red Cells\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"Red Cells\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n        \"district\": \"Al Shati\",\n        \"city\": \"Dammam\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 AM - 04:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"King Fahd Specialist Hospital — Blood Donation Center\",\n        \"district\": \"Al Asafiyah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 AM - 07:00 PM\",\n        \"working_days_text\": \"Saturday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n        \"district\": \"Al Rawdah\",\n        \"city\": \"Jeddah\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"Available today\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 AM - 05:00 PM\",\n        \"working_days_text\": \"Sunday – Thursday\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"Whole Blood\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"Platelets\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"Plasma\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · فلترة (نوع التبرع + المدينة + متاح اليوم)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?donation_type_id=1&city_id=1&available_today=1",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": null,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 4,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 4\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · متبرع مسجّل",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&lng=46.6753",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.6948,\n        \"lng\": 46.6842,\n        \"distance_km\": 2.3,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.693,\n        \"lng\": 46.715,\n        \"distance_km\": 4.6,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7136,\n        \"lng\": 46.625,\n        \"distance_km\": 5.1,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.7203,\n        \"lng\": 46.619,\n        \"distance_km\": 5.7,\n        \"is_open_today\": false,\n        \"is_open_now\": false,\n        \"is_bookable\": false,\n        \"status_label\": {\n          \"value\": \"closed_now\",\n          \"label\": \"مغلق حالياً\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"today_hours\": null,\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n        \"district\": \"العكيشية\",\n        \"city\": \"الرياض\",\n        \"lat\": 24.66,\n        \"lng\": 46.71,\n        \"distance_km\": 6.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"09:00 ص - 09:00 م\",\n        \"working_days_text\": \"كل الأيام\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          },\n          {\n            \"id\": 4,\n            \"name\": \"كريات حمراء مزدوجة\"\n          },\n          {\n            \"id\": 5,\n            \"name\": \"كريات حمراء\"\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"district\": \"الشاطئ\",\n        \"city\": \"الدمام\",\n        \"lat\": 26.45,\n        \"lng\": 50.11,\n        \"distance_km\": 394.9,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"08:00 ص - 04:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n        \"district\": \"العسافية\",\n        \"city\": \"جدة\",\n        \"lat\": 21.55,\n        \"lng\": 39.2,\n        \"distance_km\": 841.2,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:00 ص - 07:00 م\",\n        \"working_days_text\": \"السبت – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"district\": \"الروضة\",\n        \"city\": \"جدة\",\n        \"lat\": 21.581,\n        \"lng\": 39.165,\n        \"distance_km\": 843,\n        \"is_open_today\": true,\n        \"is_open_now\": true,\n        \"is_bookable\": true,\n        \"status_label\": {\n          \"value\": \"available_today\",\n          \"label\": \"متاح اليوم\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"today_hours\": \"07:30 ص - 05:00 م\",\n        \"working_days_text\": \"الأحد – الخميس\",\n        \"donation_types\": [\n          {\n            \"id\": 1,\n            \"name\": \"دم كامل\"\n          },\n          {\n            \"id\": 2,\n            \"name\": \"صفائح دموية\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"بلازما\"\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (lng, donation_type_id)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "optional · enable it to get the donor's personal fields (guest without it)",
                                "disabled": true
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}branches?lat=24.7136&donation_type_id=99999",
                              "host": [
                                "{{base_url}}branches"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id · فلتر النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "lat",
                                  "value": "24.7136",
                                  "description": "optional · nullable|numeric|required_with:lng · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "lng",
                                  "value": "46.6753",
                                  "description": "optional · nullable|numeric|required_with:lat · الموقع",
                                  "disabled": true
                                },
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:cities,id · بحث حسب المدينة (المساعد) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                },
                                {
                                  "key": "available_today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · متاح اليوم",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل خط الطول مطلوب إذا توفّر خط العرض. (and 1 more error)\",\n  \"errors\": {\n    \"lng\": [\n      \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\"\n    ],\n    \"donation_type_id\": [\n      \"حقل المحدد نوع التبرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "guidelines",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"guideline section\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"section\"); pm.expect(o).to.have.property(\"items\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "preparation",
                              "description": "required · required|in:before,during,after,preparation · القسم",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر تعليمات التحضير (`?type=preparation`) في شاشة الحجز — محتوى الإرشادات (قبل/أثناء/بعد) وتعليمات التحضير لكل نوع.\n\n## Screens\n- U57 Guidelines / Before — user app `424:4215`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4215&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4215&scaling=scale-down&content-scaling=fixed)\n- U57 Guidelines / Before — user web `86:11537`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11537&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11537&scaling=scale-down&content-scaling=fixed)\n- U58 Guidelines / During — user app `424:4322`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4322&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4322&scaling=scale-down&content-scaling=fixed)\n- U58 Guidelines / During — user web `86:11769`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11769&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11769&scaling=scale-down&content-scaling=fixed)\n- U59 Guidelines / After — user app `424:4427`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4427&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4427&scaling=scale-down&content-scaling=fixed)\n- U59 Guidelines / After — user web `86:12001`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-12001&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-12001&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user app `424:8582`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8582&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8582&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user app `2251:1098`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user web `2295:5557`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5557&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5557&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user web `84:2216`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2216&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2216&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user app `424:12843`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12843&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12843&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user web `2295:5274`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5274&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5274&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user web `84:2550`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2550&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2550&scaling=scale-down&content-scaling=fixed)\n- U152 Preparation (من مركز) — user app `2251:278`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-278&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-278&scaling=scale-down&content-scaling=fixed)\n- U157 Preparation v3 (من مركز) — user app `2251:1098`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `type` — required · required|in:before,during,after,preparation · القسم · example: `preparation`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types · example: `2`\n\n\n## Behaviour notes\n**Steps:**\n1. `type` = before | during | after | preparation.\n2. `preparation` + `donation_type_id`: البنود العامة (`donation_type_id` null) + الخاصة بالنوع (مثلاً الصفائح: «تستغرق ٩٠ دقيقة… لا أسبرين قبل ٤٨ ساعة»).\n3. يرجع `section` (عنوان + وصف) + `items[]` (عنوان، نص، نقاط، أيقونة) مرتبة + `alert` (تنبيه التحضير).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (type, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}guidelines?type=preparation&donation_type_id=2",
                              "host": [
                                "{{base_url}}guidelines"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "preparation",
                                  "description": "required · required|in:before,during,after,preparation · القسم",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "2",
                                  "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"section\": {\n      \"type\": {\n        \"value\": \"preparation\",\n        \"label\": \"التحضير للتبرع\"\n      },\n      \"title\": \"قبل موعدك\",\n      \"description\": \"اتبع هذه التعليمات لتجربة تبرع مريحة\"\n    },\n    \"items\": [\n      {\n        \"id\": 16,\n        \"title\": \"الطعام\",\n        \"body\": \"تناول وجبة صحية قبل الموعد بساعتين وتجنب الأطعمة الدهنية.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 17,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"الترطيب\",\n        \"body\": \"اشرب الماء بكثرة خلال اليوم السابق ويوم التبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      },\n      {\n        \"id\": 18,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"المستندات\",\n        \"body\": \"أحضر الهوية الوطنية أو الإقامة ورمز الحجز.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      },\n      {\n        \"id\": 19,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"مدة الجلسة\",\n        \"body\": \"خصّص ما بين ٣٠ و٩٠ دقيقة بحسب نوع التبرع، وصل قبل الموعد بعشر دقائق.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 21,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"تحضير التبرع بالصفائح\",\n        \"body\": \"تستغرق الجلسة ٩٠ دقيقة. لا أسبرين قبل ٤٨ ساعة من التبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      }\n    ],\n    \"alert\": \"أحضر هويتك الوطنية\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}guidelines?type=preparation&donation_type_id=2",
                              "host": [
                                "{{base_url}}guidelines"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "preparation",
                                  "description": "required · required|in:before,during,after,preparation · القسم",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "2",
                                  "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"section\": {\n      \"type\": {\n        \"value\": \"preparation\",\n        \"label\": \"Preparation\"\n      },\n      \"title\": \"Before your appointment\",\n      \"description\": \"Follow these instructions for a comfortable donation\"\n    },\n    \"items\": [\n      {\n        \"id\": 16,\n        \"title\": \"Food\",\n        \"body\": \"Have a healthy meal two hours before your appointment and avoid fatty food.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 17,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Hydration\",\n        \"body\": \"Drink plenty of water the day before and on the day of donation.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      },\n      {\n        \"id\": 18,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Documents\",\n        \"body\": \"Bring your national ID or iqama and your booking code.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      },\n      {\n        \"id\": 19,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Session length\",\n        \"body\": \"Allow 30 to 90 minutes depending on the donation type and arrive ten minutes early.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 21,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Platelets preparation\",\n        \"body\": \"The session takes 90 minutes. No aspirin for 48 hours before donating.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      }\n    ],\n    \"alert\": \"Bring your national ID\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · قبل التبرع",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}guidelines?type=before",
                              "host": [
                                "{{base_url}}guidelines"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "preparation",
                                  "description": "required · required|in:before,during,after,preparation · القسم",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "2",
                                  "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"section\": {\n      \"type\": {\n        \"value\": \"before\",\n        \"label\": \"قبل التبرع\"\n      },\n      \"title\": \"قبل التبرع\",\n      \"description\": \"كيف تستعد للتبرع\"\n    },\n    \"items\": [\n      {\n        \"id\": 1,\n        \"title\": \"وجبة صحية\",\n        \"body\": \"تناول وجبة متوازنة غنية بالحديد قبل التبرع بساعتين إلى ثلاث ساعات.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 2,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"الماء\",\n        \"body\": \"اشرب كمية كافية من الماء، ويُفضّل نصف لتر إضافي قبل التبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      },\n      {\n        \"id\": 3,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"النوم\",\n        \"body\": \"احصل على ٦ إلى ٨ ساعات من النوم في الليلة السابقة للتبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      },\n      {\n        \"id\": 4,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"المستندات\",\n        \"body\": \"أحضر هويتك الوطنية أو الإقامة وهاتفك لإظهار رمز الحجز.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 5,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"ما يجب تجنبه\",\n        \"body\": \"تجنب التدخين قبل ساعتين، والأطعمة الدسمة، والكحول خلال ٢٤ ساعة، والمجهود الشاق.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      }\n    ],\n    \"alert\": null\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (type)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}guidelines",
                              "host": [
                                "{{base_url}}guidelines"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "preparation",
                                  "description": "required · required|in:before,during,after,preparation · القسم",
                                  "disabled": false
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "2",
                                  "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل النوع مطلوب.\",\n  \"errors\": {\n    \"type\": [\n      \"الحقل النوع مطلوب.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "pages/donation-terms",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"content\"); pm.expect(o).to.have.property(\"updated_at\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}pages/{slug}",
                          "host": [
                            "{{base_url}}pages"
                          ],
                          "path": [
                            "{slug}"
                          ],
                          "variable": [
                            {
                              "key": "slug",
                              "value": "donation-terms",
                              "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نص «شروط وتعليمات التبرع» — محتوى الصفحات الثابتة (من نحن، الشروط، الخصوصية، شروط التبرع).\n\n## Screens\n- U86 About Enqethni — user app `424:6450`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6450&scaling=scale-down&content-scaling=fixed)\n- U86 About Enqethni — user web `89:4809`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4809&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user app `424:6565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6565&scaling=scale-down&content-scaling=fixed)\n- U87 Terms and Conditions — user web `552:2804`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2804&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user app `424:6620`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6620&scaling=scale-down&content-scaling=fixed)\n- U88 Privacy Policy — user web `552:2918`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=552-2918&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user app `2051:7702`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7702&scaling=scale-down&content-scaling=fixed)\n- U35 Review Booking — «شروط وتعليمات التبرع» — user web `2295:6354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6354&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — رابط الشروط — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `slug` — required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت · example: `terms`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث في `pages` بالـ slug (`about`, `terms`, `privacy`, `donation-terms`) — REUSE base table.\n2. يرجع العنوان والمحتوى (HTML) + `updated_at` («آخر تحديث»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — donation-terms",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}pages/{slug}",
                              "host": [
                                "{{base_url}}pages"
                              ],
                              "path": [
                                "{slug}"
                              ],
                              "variable": [
                                {
                                  "key": "slug",
                                  "value": "terms",
                                  "description": "required · in: about,terms,privacy,donation-terms (PageType) · الصفحة · source: ثابت"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"slug\": \"donation-terms\",\n    \"title\": \"شروط وتعليمات التبرع\",\n    \"content\": \"أقر بأنني بصحة جيدة، وأن المعلومات التي قدمتها صحيحة، وأنني أوافق على إجراء الفحوصات اللازمة قبل التبرع وعلى استخدام الدم المتبرع به لأغراض علاجية. كما أقر بالتزامي بتعليمات التحضير وفترة الانتظار بين التبرعات.\",\n    \"updated_at\": \"2026-10-18\"\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "eligibility/questions",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"chat blocks\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"intro_messages\"); pm.expect(o).to.have.property(\"questions\"); pm.expect(o).to.have.property(\"received_message\"); });",
                              "pm.test(\"questions (type, text, options)\", () => { const l = pm.response.json().data.questions; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"question\"); pm.expect(o).to.have.property(\"options\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}eligibility/questions",
                          "host": [
                            "{{base_url}}eligibility"
                          ],
                          "path": [
                            "questions"
                          ]
                        },
                        "description": "## Purpose\nمصدر `answers[].question_id` / `option_id` (أسئلة اختبار الأهلية) — أسئلة الشات لاختبار الأهلية (يكتبها الأدمن).\n\n## Screens\n- U38 Eligibility Assessment (chat) — user app `2051:8899`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-8899&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-8899&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user app `2251:1293`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user web `2295:6898`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6898&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-6898&scaling=scale-down&content-scaling=fixed)\n- U38 Eligibility Assessment (chat) — user web `2051:9044`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-9044&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-9044&scaling=scale-down&content-scaling=fixed)\n- U158 Eligibility (من مركز) — user app `2251:1293`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1293&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. لو `settings.ai_enabled=false` → 404 `eligibility.disabled` (الواجهة تخفي زر الاختبار).\n2. يرجع الأسئلة النشطة مرتبة (`sort_order`) مع خياراتها (single_choice) أو `type=text` (TEXTAREA).\n3. `intro_messages` = رسائل المساعد الافتتاحية (lang) — تُعرض كفقاعات الشات.\n4. الفصيلة/العمر/الجنس/آخر تبرع **لا تُسأل** — تُرسل تلقائياً للنموذج (analysis §8).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `ai_enabled=false` | `eligibility.disabled` | اختبار الأهلية غير متاح حالياً | Eligibility test is currently disabled |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}eligibility/questions",
                              "host": [
                                "{{base_url}}eligibility"
                              ],
                              "path": [
                                "questions"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"intro_messages\": [\n      \"مرحباً محمد 👋 سأطرح عليك بعض الأسئلة القصيرة للتأكد من جاهزيتك للتبرع.\"\n    ],\n    \"questions\": [\n      {\n        \"id\": 1,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"اختيار\"\n        },\n        \"question\": \"هل تعاني من أي أمراض مزمنة؟\",\n        \"options\": [\n          {\n            \"id\": 1,\n            \"label\": \"نعم\"\n          },\n          {\n            \"id\": 2,\n            \"label\": \"لا\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"type\": {\n          \"value\": \"text\",\n          \"label\": \"نص\"\n        },\n        \"question\": \"هل تتناول أي أدوية أو تعرضت لأي إجراء طبي في الفترة السابقة؟\",\n        \"options\": []\n      },\n      {\n        \"id\": 3,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"اختيار\"\n        },\n        \"question\": \"هل سافرت خارج المملكة خلال الأشهر الستة الماضية؟\",\n        \"options\": [\n          {\n            \"id\": 3,\n            \"label\": \"نعم\"\n          },\n          {\n            \"id\": 4,\n            \"label\": \"لا\"\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"اختيار\"\n        },\n        \"question\": \"متى كان آخر تبرع لك بالدم؟\",\n        \"options\": [\n          {\n            \"id\": 5,\n            \"label\": \"لم أتبرع من قبل\"\n          },\n          {\n            \"id\": 6,\n            \"label\": \"قبل أكثر من 3 أشهر\"\n          },\n          {\n            \"id\": 7,\n            \"label\": \"خلال آخر 3 أشهر\"\n          }\n        ]\n      }\n    ],\n    \"received_message\": \"تم استلام إجاباتك، جارٍ التقييم…\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}eligibility/questions",
                              "host": [
                                "{{base_url}}eligibility"
                              ],
                              "path": [
                                "questions"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"intro_messages\": [\n      \"Hi محمد 👋 I will ask you a few short questions to make sure you are ready to donate.\"\n    ],\n    \"questions\": [\n      {\n        \"id\": 1,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"Choice\"\n        },\n        \"question\": \"Do you have any chronic diseases?\",\n        \"options\": [\n          {\n            \"id\": 1,\n            \"label\": \"Yes\"\n          },\n          {\n            \"id\": 2,\n            \"label\": \"No\"\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"type\": {\n          \"value\": \"text\",\n          \"label\": \"Text\"\n        },\n        \"question\": \"Are you taking any medication or have you had any medical procedure recently?\",\n        \"options\": []\n      },\n      {\n        \"id\": 3,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"Choice\"\n        },\n        \"question\": \"Have you travelled outside the Kingdom in the last six months?\",\n        \"options\": [\n          {\n            \"id\": 3,\n            \"label\": \"Yes\"\n          },\n          {\n            \"id\": 4,\n            \"label\": \"No\"\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"type\": {\n          \"value\": \"single_choice\",\n          \"label\": \"Choice\"\n        },\n        \"question\": \"When was your last blood donation?\",\n        \"options\": [\n          {\n            \"id\": 5,\n            \"label\": \"I have never donated\"\n          },\n          {\n            \"id\": 6,\n            \"label\": \"More than 3 months ago\"\n          },\n          {\n            \"id\": 7,\n            \"label\": \"Within the last 3 months\"\n          }\n        ]\n      }\n    ],\n    \"received_message\": \"Your answers were received, assessing…\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — ai_enabled=false",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}eligibility/questions",
                              "host": [
                                "{{base_url}}eligibility"
                              ],
                              "path": [
                                "questions"
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"اختبار الأهلية غير متاح حالياً\"\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}eligibility/questions",
                              "host": [
                                "{{base_url}}eligibility"
                              ],
                              "path": [
                                "questions"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}eligibility/questions",
                              "host": [
                                "{{base_url}}eligibility"
                              ],
                              "path": [
                                "questions"
                              ]
                            }
                          },
                          "status": "Precondition Required",
                          "code": 428,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}eligibility/questions",
                              "host": [
                                "{{base_url}}eligibility"
                              ],
                              "path": [
                                "questions"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/appointments",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الحجوزات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appointments (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "home",
              "description": "Flow `home` — 9 endpoints (sprint 3). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "home",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"app: user, no services/appeals\", () => { const d = pm.response.json().data; pm.expect(d).to.have.property(\"user\"); pm.expect(d).to.not.have.property(\"services\"); pm.expect(d).to.not.have.property(\"active_appeals_count\"); });",
                          "pm.test(\"app home blocks\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"user\"); pm.expect(o).to.have.property(\"next_appointment\"); pm.expect(o).to.have.property(\"nearest_branches\"); pm.expect(o).to.have.property(\"distinguished_donors\"); pm.expect(o).to.have.property(\"stories\"); pm.expect(o).to.have.property(\"health_tip\"); });",
                          "pm.test(\"no services / appeals blocks (app)\", () => { const d = pm.response.json().data; pm.expect(d).to.not.have.property(\"services\"); pm.expect(d).to.not.have.property(\"active_appeals_count\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "lat",
                          "value": "24.7136",
                          "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                          "disabled": true
                        },
                        {
                          "key": "lng",
                          "value": "46.6753",
                          "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nالرئيسية في التطبيق (كل الأقسام المشتركة في طلب واحد).\n\n## Screens\n- U20 Home — user app `760:7273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف كائن `user` لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `lat` — optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم · example: `24.7136`\n- `lng` — optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم · example: `46.6753`\n\n\n## Behaviour notes\n**Steps:**\n1. يجمع الأقسام في طلب واحد: `user`، الموعد القادم، أقرب المراكز، المتميزون، القصص، نصيحة اليوم.\n2. بيانات المتبرع كلها في كائن `user` واحد (null للزائر).\n3. «الخدمات» لم تعد تُرجَع (ثابتة في الفرونت)، و**النداءات النشطة (active-appeals) أُزيلت من رئيسية التطبيق** — تظهر في رئيسية الويب فقط.\n4. كارت `next_appointment`: `date` باسم اليوم («الأحد ٢٥، أكتوبر») و`date_short` يوم+شهر («٢٥ أكتوبر») و`time` («١٠:٠٠ ص»)، **بلا `action_buttons`**.\n\n**Business rules / constraints:**\n- **بيانات المتبرع في كائن `user` واحد** (greeting_name, blood_type, days_until_eligible(+text), completed_donations_count) — `null` للزائر، بلا حقول مسطّحة.\n- **«الخدمات» (services) أُزيلت** من الرد — الشبكة ثابتة في الفرونت.\n- **النداءات النشطة (`active_appeals_count` + `active_appeals_by_blood_type`) للويب فقط** — غير موجودة في رئيسية التطبيق.\n- **`next_appointment`**: `date` باسم اليوم («الأحد ٢٥، أكتوبر») · `date_short` يوم+شهر («٢٥ أكتوبر») · `time` («١٠:٠٠ ص») · الفرع فيه `city` (المدينة) · `remaining_percent` (0–100) لشريط التقدّم على ٧ أيام · **بلا `action_buttons`**.\n- كل قسم من الأقسام متاح وحده أيضاً على `GET home/{section}` بنفس المفاتيح والقيم.\n- يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل جمهور (app/web) ومستخدم/زائر ولغة وموقع.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lat, lng) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"user\": null,\n    \"next_appointment\": null,\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ],\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"وسام بطل العطاء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"أعلى مستوى\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      }\n    ],\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"user\": null,\n    \"next_appointment\": null,\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 AM - 08:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"King Fahad Medical City — Main Building\",\n        \"district\": \"Sulaimaniyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 AM - 09:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"King Saud University — KSU Donation Center\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 AM - 06:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"King Khalid University Hospital — Outpatient Clinics\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ],\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"Giving hero badge\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"Top level\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Jeddah\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Dammam\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Khobar\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      }\n    ],\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"Layla Al-Harbi\",\n        \"published_on\": \"21 May 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"A gift from an unknown heart\",\n        \"excerpt\": \"I received units that saved my son from serious complications and I do not know the donors to thank them.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"Abdullah Al-Shehri\",\n        \"published_on\": \"2 May 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"First donation, finest feeling\",\n        \"excerpt\": \"I was nervous before my first donation, but the center team made it easy and reassuring.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"Khaled Al-Otaibi\",\n        \"published_on\": \"12 April 2025\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"Life-saving story\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"A race against time\",\n        \"excerpt\": \"I reached the hospital twenty minutes after reading the appeal and my unit was the first one used.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"Fatima Al-Zahrani\",\n        \"published_on\": \"27 March 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"What donation did for my family\",\n        \"excerpt\": \"My father needs monthly transfusions; without donors we could not carry on.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"Noura Al-Otaibi\",\n        \"published_on\": \"8 March 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"Ten years of giving\",\n        \"excerpt\": \"I have donated regularly for ten years and feel the same joy every time.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"Rest after donating\",\n      \"body\": \"Sit for 10 to 15 minutes after donating and have a snack before leaving.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"user\": {\n      \"greeting_name\": \"محمد\",\n      \"blood_type\": {\n        \"value\": \"O+\",\n        \"label\": \"O+\"\n      },\n      \"days_until_eligible\": 0,\n      \"days_until_eligible_text\": \"يمكنك التبرع الآن\",\n      \"completed_donations_count\": 12\n    },\n    \"next_appointment\": {\n      \"id\": 399,\n      \"code\": \"BK-2610-044\",\n      \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n      \"date\": \"الأحد ٢٥، أكتوبر\",\n      \"date_short\": \"٢٥ أكتوبر\",\n      \"time\": \"١٠:٠٠ ص\",\n      \"branch\": {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\"\n      },\n      \"status\": {\n        \"value\": \"confirmed\",\n        \"label\": \"مؤكد\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      },\n      \"remaining_text\": \"متبقي ٧ أيام\",\n      \"remaining_percent\": 0\n    },\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ],\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"وسام بطل العطاء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"أعلى مستوى\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      }\n    ],\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (lng)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home?lat=24.7136",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\",\n  \"errors\": {\n    \"lng\": [\n      \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "web-home",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"web: stats + appeals + user\", () => { const d = pm.response.json().data; pm.expect(d).to.have.property(\"stats\"); pm.expect(d).to.have.property(\"active_appeals_count\"); pm.expect(d).to.have.property(\"user\"); });",
                          "pm.test(\"web home blocks\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"stats\"); pm.expect(o).to.have.property(\"active_appeals_count\"); pm.expect(o).to.have.property(\"user\"); pm.expect(o).to.have.property(\"nearest_branches\"); pm.expect(o).to.have.property(\"stories\"); pm.expect(o).to.have.property(\"health_tip\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}web/home",
                      "host": [
                        "{{base_url}}web"
                      ],
                      "path": [
                        "home"
                      ],
                      "query": [
                        {
                          "key": "lat",
                          "value": "24.7136",
                          "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                          "disabled": true
                        },
                        {
                          "key": "lng",
                          "value": "46.6753",
                          "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nالرئيسية في الويب (الأقسام المشتركة + شريط الأرقام في كائن `stats`).\n\n## Screens\n- U20 Home — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n- W11 Home — guest variant — user web `2256:5170`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&scaling=scale-down&content-scaling=fixed)\n- W12 Home web-only sections — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n- W10 «نصيحة صحية اليوم» card — user web `424:14377`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف كائن `user` لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `lat` — optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم · example: `24.7136`\n- `lng` — optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم · example: `46.6753`\n\n\n## Behaviour notes\n**Steps:**\n1. يضيف كائن `stats` (أرقام المنصة — الشريط العلوي) ثم النداءات النشطة (`active_appeals_count` + `active_appeals_by_blood_type`)، ثم نفس أقسام رئيسية التطبيق.\n2. بيانات المتبرع كلها في كائن `user` واحد (null للزائر)؛ «الخدمات» ثابتة في الفرونت.\n3. كارت `next_appointment`: `date` باسم اليوم، `date_short` يوم+شهر، `time`، بلا `action_buttons`.\n\n**Business rules / constraints:**\n- **بيانات المتبرع في كائن `user` واحد** (greeting_name, blood_type, days_until_eligible(+text), completed_donations_count) — `null` للزائر، بلا حقول مسطّحة.\n- **«الخدمات» (services) أُزيلت** من الرد — الشبكة ثابتة في الفرونت.\n- **النداءات النشطة (`active_appeals_count` + `active_appeals_by_blood_type`) للويب فقط** — غير موجودة في رئيسية التطبيق.\n- **`next_appointment`**: `date` باسم اليوم («الأحد ٢٥، أكتوبر») · `date_short` يوم+شهر («٢٥ أكتوبر») · `time` («١٠:٠٠ ص») · الفرع فيه `city` (المدينة) · `remaining_percent` (0–100) لشريط التقدّم على ٧ أيام · **بلا `action_buttons`**.\n- كل قسم من الأقسام متاح وحده أيضاً على `GET home/{section}` بنفس المفاتيح والقيم.\n- **`stats`**: أرقام المنصة العامة (الشريط العلوي في الويب) في كائن واحد — نفس أرقام `GET stats`.\n- يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل جمهور (app/web) ومستخدم/زائر ولغة وموقع.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lat, lng) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}web/home?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}web"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"stats\": {\n      \"lives_saved\": {\n        \"value\": 42000,\n        \"text\": \"+٤٢٬٠٠٠\"\n      },\n      \"centers\": {\n        \"value\": 85,\n        \"text\": \"+٨٥\"\n      },\n      \"active_donors\": {\n        \"value\": 12000,\n        \"text\": \"+١٢٬٠٠٠\"\n      },\n      \"successful_donations\": {\n        \"value\": 45000,\n        \"text\": \"+٤٥٬٠٠٠\"\n      },\n      \"units_yearly\": {\n        \"value\": 90000,\n        \"text\": \"+٩٠٬٠٠٠\"\n      }\n    },\n    \"active_appeals_count\": 9,\n    \"active_appeals_by_blood_type\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"count\": 3\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"count\": 2\n      }\n    ],\n    \"user\": null,\n    \"next_appointment\": null,\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ],\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"وسام بطل العطاء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"أعلى مستوى\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      }\n    ],\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}web/home?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}web"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"stats\": {\n      \"lives_saved\": {\n        \"value\": 42000,\n        \"text\": \"+42,000\"\n      },\n      \"centers\": {\n        \"value\": 85,\n        \"text\": \"+85\"\n      },\n      \"active_donors\": {\n        \"value\": 12000,\n        \"text\": \"+12,000\"\n      },\n      \"successful_donations\": {\n        \"value\": 45000,\n        \"text\": \"+45,000\"\n      },\n      \"units_yearly\": {\n        \"value\": 90000,\n        \"text\": \"+90,000\"\n      }\n    },\n    \"active_appeals_count\": 9,\n    \"active_appeals_by_blood_type\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"count\": 3\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"count\": 2\n      }\n    ],\n    \"user\": null,\n    \"next_appointment\": null,\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 AM - 08:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"King Fahad Medical City — Main Building\",\n        \"district\": \"Sulaimaniyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 AM - 09:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"King Saud University — KSU Donation Center\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 AM - 06:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"King Khalid University Hospital — Outpatient Clinics\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ],\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"Giving hero badge\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"Top level\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Jeddah\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Dammam\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Khobar\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      }\n    ],\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"Layla Al-Harbi\",\n        \"published_on\": \"21 May 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"A gift from an unknown heart\",\n        \"excerpt\": \"I received units that saved my son from serious complications and I do not know the donors to thank them.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"Abdullah Al-Shehri\",\n        \"published_on\": \"2 May 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"First donation, finest feeling\",\n        \"excerpt\": \"I was nervous before my first donation, but the center team made it easy and reassuring.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"Khaled Al-Otaibi\",\n        \"published_on\": \"12 April 2025\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"Life-saving story\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"A race against time\",\n        \"excerpt\": \"I reached the hospital twenty minutes after reading the appeal and my unit was the first one used.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"Fatima Al-Zahrani\",\n        \"published_on\": \"27 March 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"What donation did for my family\",\n        \"excerpt\": \"My father needs monthly transfusions; without donors we could not carry on.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"Noura Al-Otaibi\",\n        \"published_on\": \"8 March 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"Ten years of giving\",\n        \"excerpt\": \"I have donated regularly for ten years and feel the same joy every time.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"Rest after donating\",\n      \"body\": \"Sit for 10 to 15 minutes after donating and have a snack before leaving.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}web/home?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}web"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"stats\": {\n      \"lives_saved\": {\n        \"value\": 42000,\n        \"text\": \"+٤٢٬٠٠٠\"\n      },\n      \"centers\": {\n        \"value\": 85,\n        \"text\": \"+٨٥\"\n      },\n      \"active_donors\": {\n        \"value\": 12000,\n        \"text\": \"+١٢٬٠٠٠\"\n      },\n      \"successful_donations\": {\n        \"value\": 45000,\n        \"text\": \"+٤٥٬٠٠٠\"\n      },\n      \"units_yearly\": {\n        \"value\": 90000,\n        \"text\": \"+٩٠٬٠٠٠\"\n      }\n    },\n    \"active_appeals_count\": 9,\n    \"active_appeals_by_blood_type\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"count\": 3\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"count\": 2\n      }\n    ],\n    \"user\": {\n      \"greeting_name\": \"محمد\",\n      \"blood_type\": {\n        \"value\": \"O+\",\n        \"label\": \"O+\"\n      },\n      \"days_until_eligible\": 0,\n      \"days_until_eligible_text\": \"يمكنك التبرع الآن\",\n      \"completed_donations_count\": 12\n    },\n    \"next_appointment\": {\n      \"id\": 399,\n      \"code\": \"BK-2610-044\",\n      \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n      \"date\": \"الأحد ٢٥، أكتوبر\",\n      \"date_short\": \"٢٥ أكتوبر\",\n      \"time\": \"١٠:٠٠ ص\",\n      \"branch\": {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\"\n      },\n      \"status\": {\n        \"value\": \"confirmed\",\n        \"label\": \"مؤكد\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      },\n      \"remaining_text\": \"متبقي ٧ أيام\",\n      \"remaining_percent\": 0\n    },\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ],\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"وسام بطل العطاء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"أعلى مستوى\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      }\n    ],\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (lng)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}web/home?lat=24.7136",
                          "host": [
                            "{{base_url}}web"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\",\n  \"errors\": {\n    \"lng\": [\n      \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "user",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"only this block's keys\", () => pm.expect(Object.keys(pm.response.json().data)).to.eql([\"user\"]));",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"user\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home/user",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [
                        "user"
                      ]
                    },
                    "description": "## Purpose\nبيانات المتبرع التي تظهر في الرئيسية داخل كائن `user` واحد (null للزائر).\n\n## Screens\n- U20 Home — user app `760:7273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&scaling=scale-down&content-scaling=fixed)\n- U20 Home — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional`)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. `user` كائن واحد فيه: `greeting_name` (الاسم الأول) · `blood_type` · `days_until_eligible` (0 = يمكنه التبرع اليوم) + نص «٣٦ي حتى التبرع القادم» · `completed_donations_count`.\n2. يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل مستخدم/زائر ولغة وموقع.\n\n**Business rules / constraints:**\n- الزائر: `user = null` (كائن واحد، لا حقول مسطّحة).\n- `data` = مفاتيح هذا القسم فقط، بنفس أسمائها وقيمها داخل `GET home` / `GET web/home`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/user?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"user\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/user?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"user\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/user?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"user\": {\n      \"greeting_name\": \"محمد\",\n      \"blood_type\": {\n        \"value\": \"O+\",\n        \"label\": \"O+\"\n      },\n      \"days_until_eligible\": 0,\n      \"days_until_eligible_text\": \"يمكنك التبرع الآن\",\n      \"completed_donations_count\": 12\n    }\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "active-appeals",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"only this block's keys\", () => pm.expect(Object.keys(pm.response.json().data)).to.eql([\"active_appeals_count\",\"active_appeals_by_blood_type\"]));",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"active_appeals_count\"); pm.expect(o).to.have.property(\"active_appeals_by_blood_type\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home/active-appeals",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [
                        "active-appeals"
                      ]
                    },
                    "description": "## Purpose\nعدد النداءات النشطة الآن وتوزيعها على الفصائل.\n\n## Screens\n- W12 Home web-only sections — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional`)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. نداءات `active` فقط، مجمّعة بالفصيلة وبترتيب الفصائل.\n2. `active_appeals_count` = مجموعها (عدّاد شارة «النداءات الطارئة» في التطبيق، والشريط في الويب).\n3. يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل مستخدم/زائر ولغة وموقع.\n\n**Business rules / constraints:**\n- عام — نفس الرد للزائر والمسجّل.\n- `data` = مفاتيح هذا القسم فقط، بنفس أسمائها وقيمها داخل `GET home` / `GET web/home`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/active-appeals?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "active-appeals"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"active_appeals_count\": 9,\n    \"active_appeals_by_blood_type\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"count\": 3\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"count\": 2\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/active-appeals?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "active-appeals"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"active_appeals_count\": 9,\n    \"active_appeals_by_blood_type\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"count\": 3\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"count\": 2\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/active-appeals?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "active-appeals"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"active_appeals_count\": 9,\n    \"active_appeals_by_blood_type\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"count\": 3\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"count\": 1\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"count\": 2\n      }\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "next-appointment",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"only this block's keys\", () => pm.expect(Object.keys(pm.response.json().data)).to.eql([\"next_appointment\"]));",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"next_appointment\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home/next-appointment",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [
                        "next-appointment"
                      ]
                    },
                    "description": "## Purpose\nكارت الموعد القادم وحده (null للزائر أو بلا حجز قائم).\n\n## Screens\n- U20 Home — user app `760:7273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional`)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. الحجز القائم الوحيد (pending/confirmed، ليس في الماضي): `date` باسم اليوم («الأحد ٢٥، أكتوبر») و`date_short` يوم+شهر («٢٥ أكتوبر») و`time` («١٠:٠٠ ص») و`status` ملوّن — **بلا `action_buttons`**.\n2. الفرع يحمل `id` و`name` و`district` و**`city`** (المدينة).\n3. `remaining_text` («متبقي يومان») ومعه **`remaining_percent`** (0–100) لشريط التقدّم، يُحسب على نافذة **٧ أيام**: `(7 − الأيام المتبقية) ÷ 7` (٧ أيام متبقية = 0٪، اليوم = 100٪).\n4. يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل مستخدم/زائر ولغة وموقع.\n\n**Business rules / constraints:**\n- الزائر أو بلا حجز قائم: `next_appointment = null`.\n- `data` = مفاتيح هذا القسم فقط، بنفس أسمائها وقيمها داخل `GET home` / `GET web/home`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/next-appointment?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "next-appointment"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"next_appointment\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/next-appointment?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "next-appointment"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"next_appointment\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/next-appointment?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "next-appointment"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"next_appointment\": {\n      \"id\": 399,\n      \"code\": \"BK-2610-044\",\n      \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n      \"date\": \"الأحد ٢٥، أكتوبر\",\n      \"date_short\": \"٢٥ أكتوبر\",\n      \"time\": \"١٠:٠٠ ص\",\n      \"branch\": {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\"\n      },\n      \"status\": {\n        \"value\": \"confirmed\",\n        \"label\": \"مؤكد\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      },\n      \"remaining_text\": \"متبقي ٧ أيام\",\n      \"remaining_percent\": 0\n    }\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "nearest-branches",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"only this block's keys\", () => pm.expect(Object.keys(pm.response.json().data)).to.eql([\"nearest_branches\"]));",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"nearest_branches\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home/nearest-branches",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [
                        "nearest-branches"
                      ],
                      "query": [
                        {
                          "key": "lat",
                          "value": "24.7136",
                          "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                          "disabled": true
                        },
                        {
                          "key": "lng",
                          "value": "46.6753",
                          "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nأقرب ٤ مراكز لموقع المستخدم.\n\n## Screens\n- U20 Home — user app `760:7273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional`)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `lat` — optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم · example: `24.7136`\n- `lng` — optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم · example: `46.6753`\n\n\n## Behaviour notes\n**Steps:**\n1. ٤ فروع بالمسافة لو أُرسل `lat/lng`، وإلا مدينة المستخدم/الرياض.\n2. لكل فرع `is_open_now` و`today_hours` و`distance_km`.\n3. يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل مستخدم/زائر ولغة وموقع.\n\n**Business rules / constraints:**\n- `lat` و`lng` معاً أو لا شيء.\n- `data` = مفاتيح هذا القسم فقط، بنفس أسمائها وقيمها داخل `GET home` / `GET web/home`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (lat, lng) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/nearest-branches?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "nearest-branches"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/nearest-branches?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "nearest-branches"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"district\": \"Olaya\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 AM - 08:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"King Fahad Medical City — Main Building\",\n        \"district\": \"Sulaimaniyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 AM - 09:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"King Saud University — KSU Donation Center\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 AM - 06:00 PM\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"King Khalid University Hospital — Outpatient Clinics\",\n        \"district\": \"Diriyah\",\n        \"city\": \"Riyadh\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/nearest-branches?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "nearest-branches"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"nearest_branches\": [\n      {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"district\": \"العليا\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 2.3,\n        \"today_hours\": \"08:00 ص - 08:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 5,\n        \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n        \"district\": \"السليمانية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 4.6,\n        \"today_hours\": \"07:00 ص - 09:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 9,\n        \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.1,\n        \"today_hours\": \"10:00 ص - 06:00 م\",\n        \"is_open_now\": true\n      },\n      {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n        \"district\": \"الدرعية\",\n        \"city\": \"الرياض\",\n        \"distance_km\": 5.7,\n        \"today_hours\": null,\n        \"is_open_now\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (lng)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/nearest-branches?lat=24.7136",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "nearest-branches"
                          ],
                          "query": [
                            {
                              "key": "lat",
                              "value": "24.7136",
                              "description": "optional · nullable|numeric|between:-90,90|required_with:lng · موقع المستخدم",
                              "disabled": true
                            },
                            {
                              "key": "lng",
                              "value": "46.6753",
                              "description": "optional · nullable|numeric|between:-180,180|required_with:lat · موقع المستخدم",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\",\n  \"errors\": {\n    \"lng\": [\n      \"الحقل خط الطول مطلوب إذا توفّر خط العرض.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "distinguished-donors",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"only this block's keys\", () => pm.expect(Object.keys(pm.response.json().data)).to.eql([\"distinguished_donors\"]));",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"distinguished_donors\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home/distinguished-donors",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [
                        "distinguished-donors"
                      ]
                    },
                    "description": "## Purpose\nأول ٦ متبرعين متميزين في الرئيسية.\n\n## Screens\n- U20 Home — user app `760:7273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional`)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. ≥5 تبرعات مكتملة، `show_in_donor_lists=true`، `is_demo=false` — ترتيب تنازلي، أول ٦.\n2. لكل متبرع **صورته** `image` (رابط كامل، الافتراضية `defaults/default.png`) و**وسامه** `badge` ومعه **أيقونة الوسام** `badge.image` (من `badges/<level>.png`) و`level_label`.\n3. يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل مستخدم/زائر ولغة وموقع.\n\n**Business rules / constraints:**\n- عام — لا رقم جوال ولا بيانات خاصة.\n- `data` = مفاتيح هذا القسم فقط، بنفس أسمائها وقيمها داخل `GET home` / `GET web/home`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/distinguished-donors?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "distinguished-donors"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"وسام بطل العطاء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"أعلى مستوى\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/distinguished-donors?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "distinguished-donors"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"Giving hero badge\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"Top level\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Jeddah\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Dammam\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Khobar\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/distinguished-donors?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "distinguished-donors"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"distinguished_donors\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"وسام بطل العطاء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"أعلى مستوى\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      }\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "stories",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"only this block's keys\", () => pm.expect(Object.keys(pm.response.json().data)).to.eql([\"stories\"]));",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"stories\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home/stories",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [
                        "stories"
                      ]
                    },
                    "description": "## Purpose\nأحدث ٥ قصص عطاء منشورة.\n\n## Screens\n- U20 Home — user app `760:7273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional`)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. القصص المنشورة، الأحدث أولاً، أول ٥.\n2. تاريخ النشر `published_on` بصيغة «١٠ يناير ٢٠٢٥» (يوم + شهر + سنة) حسب اللغة.\n3. يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل مستخدم/زائر ولغة وموقع.\n\n**Business rules / constraints:**\n- عام — نفس الرد للزائر والمسجّل.\n- `data` = مفاتيح هذا القسم فقط، بنفس أسمائها وقيمها داخل `GET home` / `GET web/home`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/stories?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "stories"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/stories?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "stories"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"Layla Al-Harbi\",\n        \"published_on\": \"21 May 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"A gift from an unknown heart\",\n        \"excerpt\": \"I received units that saved my son from serious complications and I do not know the donors to thank them.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"Abdullah Al-Shehri\",\n        \"published_on\": \"2 May 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"First donation, finest feeling\",\n        \"excerpt\": \"I was nervous before my first donation, but the center team made it easy and reassuring.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"Khaled Al-Otaibi\",\n        \"published_on\": \"12 April 2025\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"Life-saving story\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"A race against time\",\n        \"excerpt\": \"I reached the hospital twenty minutes after reading the appeal and my unit was the first one used.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"Fatima Al-Zahrani\",\n        \"published_on\": \"27 March 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"What donation did for my family\",\n        \"excerpt\": \"My father needs monthly transfusions; without donors we could not carry on.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"Noura Al-Otaibi\",\n        \"published_on\": \"8 March 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"Ten years of giving\",\n        \"excerpt\": \"I have donated regularly for ten years and feel the same joy every time.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/stories?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "stories"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"stories\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "health-tip",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"only this block's keys\", () => pm.expect(Object.keys(pm.response.json().data)).to.eql([\"health_tip\"]));",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"health_tip\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}home/health-tip",
                      "host": [
                        "{{base_url}}home"
                      ],
                      "path": [
                        "health-tip"
                      ]
                    },
                    "description": "## Purpose\nنصيحة صحية عشوائية — واحدة مختلفة في كل طلب.\n\n## Screens\n- W10 «نصيحة صحية اليوم» card — user web `424:14377`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional`)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. `HealthTipService::random()` — نصيحة فعّالة عشوائية (`inRandomOrder`)؛ `null` لو لا توجد نصائح.\n2. **هذا القسم لا يُخزَّن مؤقتاً** (بلا كاش) علشان يرجع واحدة مختلفة في كل مرة.\n3. يُخزَّن الرد مؤقتاً ٦٠ ثانية لكل مستخدم/زائر ولغة وموقع.\n\n**Business rules / constraints:**\n- عام — نفس المصدر للزائر والمسجّل.\n- داخل `GET home` / `GET web/home` تُختار نصيحة عشوائية لكل نافذة كاش (٦٠ ثانية)؛ أما `GET home/health-tip` فعشوائية في كل طلب.\n- `data` = مفاتيح هذا القسم فقط، بنفس أسمائها وقيمها داخل `GET home` / `GET web/home`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/health-tip?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "health-tip"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/health-tip?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "health-tip"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"Rest after donating\",\n      \"body\": \"Sit for 10 to 15 minutes after donating and have a snack before leaving.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · متبرع مسجّل (بيانات شخصية)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}home/health-tip?lat=24.7136&lng=46.6753",
                          "host": [
                            "{{base_url}}home"
                          ],
                          "path": [
                            "health-tip"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"health_tip\": {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `home` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "badges",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"badge levels with thresholds\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"min_donations\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });",
                              "pm.test(\"five levels\", () => pm.expect(pm.response.json().data).to.have.length(5));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}badges",
                          "host": [
                            "{{base_url}}badges"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر مستويات الشارات (badge.level) — الأوسمة الخمسة وحدودها (شاشة المتميزين).\n\n## Screens\n- U133 Distinguished Donors — user app `758:771`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&scaling=scale-down&content-scaling=fixed)\n- U133 Distinguished Donors — user web `825:8591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع أوسمة جدول `badges` (المُدارة من لوحة التحكم) مرتّبة تصاعديًا بالحد الأدنى للتبرعات، مع الاسم المترجم + تسمية المستوى + الحد الأدنى + الألوان + **أيقونة الوسام** (`image`).\n\n**Business rules / constraints:**\n- المستويات والحدود تُدار من الداشبورد (جدول `badges`: `min_donations` + رفع أيقونة لكل وسام). البذرة الافتراضية: برونزي 5 · فضي 10 · ذهبي 15 · ماسي 25 · بطل العطاء 50 (التسمية «المستوى الأول…الرابع / أعلى مستوى»).\n- الوسام يُحسب من عدد التبرعات **المكتملة** (`donations.status in completed,used`) — أعلى وسام حدُّه ≤ عدد التبرعات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}badges",
                              "host": [
                                "{{base_url}}badges"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"bronze\",\n      \"label\": \"الوسام البرونزي\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/bronze.png\",\n      \"level_label\": \"المستوى الأول\",\n      \"min_donations\": 5\n    },\n    {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\",\n      \"image\": \"http://help.test/uploads/badges/silver.png\",\n      \"level_label\": \"المستوى الثاني\",\n      \"min_donations\": 10\n    },\n    {\n      \"value\": \"gold\",\n      \"label\": \"الوسام الذهبي\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/gold.png\",\n      \"level_label\": \"المستوى الثالث\",\n      \"min_donations\": 15\n    },\n    {\n      \"value\": \"diamond\",\n      \"label\": \"الوسام الماسي\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\",\n      \"image\": \"http://help.test/uploads/badges/diamond.png\",\n      \"level_label\": \"المستوى الرابع\",\n      \"min_donations\": 25\n    },\n    {\n      \"value\": \"hero\",\n      \"label\": \"وسام بطل العطاء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"image\": \"http://help.test/uploads/badges/hero.png\",\n      \"level_label\": \"أعلى مستوى\",\n      \"min_donations\": 50\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}badges",
                              "host": [
                                "{{base_url}}badges"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"bronze\",\n      \"label\": \"Bronze badge\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/bronze.png\",\n      \"level_label\": \"Level one\",\n      \"min_donations\": 5\n    },\n    {\n      \"value\": \"silver\",\n      \"label\": \"Silver badge\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\",\n      \"image\": \"http://help.test/uploads/badges/silver.png\",\n      \"level_label\": \"Level two\",\n      \"min_donations\": 10\n    },\n    {\n      \"value\": \"gold\",\n      \"label\": \"Gold badge\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/gold.png\",\n      \"level_label\": \"Level three\",\n      \"min_donations\": 15\n    },\n    {\n      \"value\": \"diamond\",\n      \"label\": \"Diamond badge\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\",\n      \"image\": \"http://help.test/uploads/badges/diamond.png\",\n      \"level_label\": \"Level four\",\n      \"min_donations\": 25\n    },\n    {\n      \"value\": \"hero\",\n      \"label\": \"Giving hero badge\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"image\": \"http://help.test/uploads/badges/hero.png\",\n      \"level_label\": \"Top level\",\n      \"min_donations\": 50\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "stats",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"lives_saved\"); pm.expect(o).to.have.property(\"centers\"); pm.expect(o).to.have.property(\"active_donors\"); pm.expect(o).to.have.property(\"successful_donations\"); pm.expect(o).to.have.property(\"units_yearly\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stats",
                          "host": [
                            "{{base_url}}stats"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر شريط الإحصاءات (web) — أرقام المنصة العامة (الترحيب/نظرة التبرع/شريط الويب).\n\n## Screens\n- U7 Welcome — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user app `424:3791`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user web `163:4705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `2256:5170`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يقرأ مفاتيح settings: `stats_lives_saved`, `stats_centers`, `stats_active_donors`, `stats_successful_donations`, `stats_units_yearly` (يكتبها الأدمن — brief §10.1).\n2. يرجع الأرقام + نص منسّق بالأرقام العربية/اللاتينية حسب اللغة (`+٤٢٬٠٠٠`).\n3. Cache 10 دقائق (يُمسح عند حفظ الإعدادات).\n\n**Business rules / constraints:**\n- C13: مجموعة واحدة من المفاتيح للترحيب ونظرة التبرع والويب — لا أرقام مختلفة بين الشاشات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | مفتاح غير مضبوط → `value: 0` | `` |  |  |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stats",
                              "host": [
                                "{{base_url}}stats"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+٤٢٬٠٠٠\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+٨٥\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+١٢٬٠٠٠\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+٤٥٬٠٠٠\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+٩٠٬٠٠٠\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — English",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stats",
                              "host": [
                                "{{base_url}}stats"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+42,000\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+85\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+12,000\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+45,000\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+90,000\"\n    }\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "health-tips",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"health tips\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"body\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}health-tips",
                          "host": [
                            "{{base_url}}health-tips"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "today",
                              "value": "1",
                              "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر نصيحة اليوم (`?today=1`) ونصائح الصحة — النصائح الصحية (كارت/نصيحة اليوم).\n\n## Screens\n- U2 إرشاد صحي (card component) — user app `424:10121`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10121&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10121&scaling=scale-down&content-scaling=fixed)\n- W10 «نصيحة صحية اليوم» (web) — user web `424:14377`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `today` — optional · nullable|boolean · نصيحة اليوم فقط · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. النصائح النشطة مرتبة؛ `?today=1` يرجع نصيحة واحدة دوّارة يومياً (`dayOfYear % count`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}health-tips",
                              "host": [
                                "{{base_url}}health-tips"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"title\": \"اشرب الماء بكثرة\",\n      \"body\": \"شرب الماء قبل وبعد التبرع يساعد جسمك على تعويض السوائل بسرعة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"title\": \"تناول الأطعمة الغنية بالحديد\",\n      \"body\": \"اللحوم والبقوليات والسبانخ ترفع مخزون الحديد وتجهزك للتبرع القادم.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"title\": \"نم جيداً قبل التبرع\",\n      \"body\": \"النوم من ٦ إلى ٨ ساعات يقلل احتمال الدوخة أثناء التبرع.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"title\": \"تبرعك الواحد ينقذ ٣ أرواح\",\n      \"body\": \"يمكن فصل الدم الكامل إلى كريات حمراء وصفائح وبلازما لتفيد ثلاثة مرضى.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 6,\n      \"title\": \"التزم بفترة الانتظار\",\n      \"body\": \"الالتزام بفترة الانتظار بين التبرعات يحمي صحتك ويحافظ على مخزون الحديد.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}health-tips",
                              "host": [
                                "{{base_url}}health-tips"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"title\": \"Drink plenty of water\",\n      \"body\": \"Drinking water before and after donating helps your body replace fluids quickly.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"title\": \"Eat iron-rich food\",\n      \"body\": \"Meat, legumes and spinach raise your iron stores and prepare you for the next donation.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"title\": \"Sleep well before donating\",\n      \"body\": \"Six to eight hours of sleep lowers the chance of dizziness while donating.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"title\": \"Rest after donating\",\n      \"body\": \"Sit for 10 to 15 minutes after donating and have a snack before leaving.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"title\": \"One donation saves 3 lives\",\n      \"body\": \"Whole blood can be separated into red cells, platelets and plasma to help three patients.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 6,\n      \"title\": \"Respect the waiting period\",\n      \"body\": \"Respecting the waiting period between donations protects your health and your iron stores.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · نصيحة اليوم",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}health-tips?today=1",
                              "host": [
                                "{{base_url}}health-tips"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "today",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/appointments",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الحجوزات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appointments (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/donations",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "donations",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ التبرعات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: donations (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"donations\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "donations",
              "description": "Flow `donations` — 3 endpoints (sprint 5). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "donations",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"history rows (record type + id, unified status, centre, date/time, type, blood type)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"record_type\"); pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"display_status\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"time\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"can_track\"); } });",
                          "pm.test(\"paginated + completed counter\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); pm.expect(o).to.have.property(\"meta\"); });",
                          "pm.test(\"completed_count\", () => { const o = pm.response.json().data.meta; pm.expect(o).to.have.property(\"completed_count\"); });",
                          "{ const l = pm.response.json().data.data; const unit = l.find((r) => r.record_type === \"donation\"); const booking = l.find((r) => r.record_type === \"appointment\"); if (unit) { pm.collectionVariables.set(\"donation_id\", unit.id); pm.environment.set(\"donation_id\", unit.id); } if (booking) { pm.collectionVariables.set(\"donation_appointment_id\", booking.id); pm.environment.set(\"donation_appointment_id\", booking.id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}donations",
                      "host": [
                        "{{base_url}}donations"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "tab",
                          "value": "all",
                          "description": "optional · nullable|in:all,completed (default all) · التبويب",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nسجل التبرعات المدمج (حجوزات قائمة + تبرعات بمراحلها).\n\n## Screens\n- U42 Donation History (المكتملة) — user app `424:5130`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-5130&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-5130&scaling=scale-down&content-scaling=fixed)\n- U42 Donation History (المكتملة) — user web `86:8597`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-8597&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-8597&scaling=scale-down&content-scaling=fixed)\n- U47 Donation History v02 (حالات المراحل) — user app `2095:37851`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-37851&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-37851&scaling=scale-down&content-scaling=fixed)\n- U47 Donation History v02 (حالات المراحل) — user web `1852:10556`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-10556&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-10556&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Query params\n- `tab` — optional · nullable|in:all,completed (default all) · التبويب · example: `all`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. C17 — يدمج مصدرين في قائمة واحدة مرتبة بالتاريخ تنازلياً: (1) **الحجوزات القائمة** (pending → «قيد المراجعة»، confirmed → «مجدول») + no_show → «لم يكتمل»، (2) **التبرعات** (in_progress → «قيد <المرحلة>»، ready_for_use/completed → «جاهز للاستخدام»/«مكتمل»، used → «تم الاستخدام»، stopped → «لم يكتمل»).\n2. `tab=completed` → التبرعات completed/used فقط؛ `tab=all` → الكل.\n3. كل عنصر يحمل `record_type` (`appointment|donation`) + `id` لاستخدامه في التفاصيل.\n4. `meta.count` = «4 تبرعات مسجلة» (عدد المكتملة).\n\n**Business rules / constraints:**\n- `display_status` = `UserDonationDisplayStatus` ملوّن (analysis §4.2 C17).\n- الحجوزات الملغاة/المرفوضة/المنتهية **لا** تظهر هنا (مكانها «المواعيد — السجل»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (tab) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations?tab=all&page=1",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "all",
                              "description": "optional · nullable|in:all,completed (default all) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"record_type\": \"appointment\",\n        \"id\": 399,\n        \"code\": \"BK-2610-045\",\n        \"display_status\": {\n          \"value\": \"scheduled\",\n          \"label\": \"مجدول\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2026-10-25\",\n        \"date_short\": \"٢٥ أكتوبر\",\n        \"time\": \"10:00 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": false\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 363,\n        \"code\": \"DON-2610-018\",\n        \"display_status\": {\n          \"value\": \"in_stage\",\n          \"label\": \"قيد اختبارات المختبر\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2026-10-15\",\n        \"date_short\": \"١٥ أكتوبر\",\n        \"time\": \"10:08 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 362,\n        \"code\": \"DON-2610-017\",\n        \"display_status\": {\n          \"value\": \"in_stage\",\n          \"label\": \"قيد المعالجة والفصل\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2026-10-08\",\n        \"date_short\": \"٨ أكتوبر\",\n        \"time\": \"09:05 ص\",\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 361,\n        \"code\": \"DON-2609-030\",\n        \"display_status\": {\n          \"value\": \"incomplete\",\n          \"label\": \"لم يكتمل\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2026-09-10\",\n        \"date_short\": \"١٠ سبتمبر\",\n        \"time\": \"09:04 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": false\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 360,\n        \"code\": \"DON-2606-013\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2026-06-10\",\n        \"date_short\": \"١٠ يونيو\",\n        \"time\": \"09:12 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 359,\n        \"code\": \"DON-2603-014\",\n        \"display_status\": {\n          \"value\": \"used\",\n          \"label\": \"تم الاستخدام\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2026-03-02\",\n        \"date_short\": \"٢ مارس\",\n        \"time\": \"09:00 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 358,\n        \"code\": \"DON-2511-008\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2025-11-22\",\n        \"date_short\": \"٢٢ نوفمبر\",\n        \"time\": \"09:10 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 357,\n        \"code\": \"DON-2508-012\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2025-08-14\",\n        \"date_short\": \"١٤ أغسطس\",\n        \"time\": \"09:05 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 356,\n        \"code\": \"DON-2505-009\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2025-05-06\",\n        \"date_short\": \"٦ مايو\",\n        \"time\": \"10:12 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 355,\n        \"code\": \"DON-2501-006\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2025-01-26\",\n        \"date_short\": \"٢٦ يناير\",\n        \"time\": \"09:07 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 354,\n        \"code\": \"DON-2410-007\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n          \"district\": \"العكيشية\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2024-10-18\",\n        \"date_short\": \"١٨ أكتوبر\",\n        \"time\": \"10:06 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"appointment\",\n        \"id\": 393,\n        \"code\": \"BK-2410-010\",\n        \"display_status\": {\n          \"value\": \"incomplete\",\n          \"label\": \"لم يكتمل\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2024-10-12\",\n        \"date_short\": \"١٢ أكتوبر\",\n        \"time\": \"09:30 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": false\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 353,\n        \"code\": \"DON-2407-005\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2024-07-10\",\n        \"date_short\": \"١٠ يوليو\",\n        \"time\": \"09:03 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 352,\n        \"code\": \"DON-2404-005\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2024-04-01\",\n        \"date_short\": \"١ أبريل\",\n        \"time\": \"10:10 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 351,\n        \"code\": \"DON-2312-003\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"date\": \"2023-12-23\",\n        \"date_short\": \"٢٣ ديسمبر\",\n        \"time\": \"09:11 ص\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 17,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"completed_count\": 12\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations?tab=completed",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "all",
                              "description": "optional · nullable|in:all,completed (default all) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"record_type\": \"donation\",\n        \"id\": 360,\n        \"code\": \"DON-2606-013\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2026-06-10\",\n        \"date_short\": \"10 June\",\n        \"time\": \"09:12 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 359,\n        \"code\": \"DON-2603-014\",\n        \"display_status\": {\n          \"value\": \"used\",\n          \"label\": \"Used\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2026-03-02\",\n        \"date_short\": \"2 March\",\n        \"time\": \"09:00 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 358,\n        \"code\": \"DON-2511-008\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2025-11-22\",\n        \"date_short\": \"22 November\",\n        \"time\": \"09:10 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 357,\n        \"code\": \"DON-2508-012\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2025-08-14\",\n        \"date_short\": \"14 August\",\n        \"time\": \"09:05 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 356,\n        \"code\": \"DON-2505-009\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Fahad Medical City — Main Building\",\n          \"district\": \"Sulaimaniyah\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2025-05-06\",\n        \"date_short\": \"6 May\",\n        \"time\": \"10:12 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 355,\n        \"code\": \"DON-2501-006\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2025-01-26\",\n        \"date_short\": \"26 January\",\n        \"time\": \"09:07 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 354,\n        \"code\": \"DON-2410-007\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"Central Blood Bank — Central Blood Bank Donation Center\",\n          \"district\": \"Al Okayshiyah\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2024-10-18\",\n        \"date_short\": \"18 October\",\n        \"time\": \"10:06 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 353,\n        \"code\": \"DON-2407-005\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2024-07-10\",\n        \"date_short\": \"10 July\",\n        \"time\": \"09:03 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 352,\n        \"code\": \"DON-2404-005\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Fahad Medical City — Main Building\",\n          \"district\": \"Sulaimaniyah\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2024-04-01\",\n        \"date_short\": \"1 April\",\n        \"time\": \"10:10 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 351,\n        \"code\": \"DON-2312-003\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2023-12-23\",\n        \"date_short\": \"23 December\",\n        \"time\": \"09:11 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 350,\n        \"code\": \"DON-2309-004\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2023-09-14\",\n        \"date_short\": \"14 September\",\n        \"time\": \"09:04 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      },\n      {\n        \"record_type\": \"donation\",\n        \"id\": 349,\n        \"code\": \"DON-2306-005\",\n        \"display_status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"branch\": {\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"date\": \"2023-06-06\",\n        \"date_short\": \"6 June\",\n        \"time\": \"09:08 AM\",\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"can_track\": true\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 12,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 12\n    },\n    \"meta\": {\n      \"completed_count\": 12\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (tab)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations?tab=nope",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "all",
                              "description": "optional · nullable|in:all,completed (default all) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد التبويب غير صالح.\",\n  \"errors\": {\n    \"tab\": [\n      \"حقل المحدد التبويب غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "all",
                              "description": "optional · nullable|in:all,completed (default all) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "all",
                              "description": "optional · nullable|in:all,completed (default all) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations?tab=all&page=1",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "all",
                              "description": "optional · nullable|in:all,completed (default all) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "donation-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"record details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"record_type\"); pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"display_status\"); pm.expect(o).to.have.property(\"stage\"); pm.expect(o).to.have.property(\"stage_text\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"time\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"incomplete_message\"); pm.expect(o).to.have.property(\"deferred_until_text\"); pm.expect(o).to.have.property(\"action_buttons\"); pm.expect(o).to.have.property(\"track_unavailable_text\"); });",
                          "pm.test(\"one track button; off with its explanation when there is nothing to track\", () => { const d = pm.response.json().data; pm.expect(d.action_buttons.map((b) => b.key)).to.eql([\"track\"]); if (!d.action_buttons[0].is_available) pm.expect(d.track_unavailable_text).to.be.a(\"string\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}donations/{id}",
                      "host": [
                        "{{base_url}}donations"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{donation_id}}",
                          "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                        }
                      ],
                      "query": [
                        {
                          "key": "record_type",
                          "value": "donation",
                          "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل سجل في سجل التبرعات بأي حالة.\n\n## Screens\n- U43 Donation Details / Completed — user app `424:5341`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-5341&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-5341&scaling=scale-down&content-scaling=fixed)\n- U43 Donation Details / Completed — user web `86:8935`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-8935&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-8935&scaling=scale-down&content-scaling=fixed)\n- U44 Completed v02 — user app `424:7679`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7679&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7679&scaling=scale-down&content-scaling=fixed)\n- U44 Completed v02 — user web `86:9433`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9433&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9433&scaling=scale-down&content-scaling=fixed)\n- U45 Completed v03 — user app `424:7770`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7770&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7770&scaling=scale-down&content-scaling=fixed)\n- U45 Completed v03 — user web `86:9931`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9931&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9931&scaling=scale-down&content-scaling=fixed)\n- U46 Completed v04 — user app `424:7868`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7868&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7868&scaling=scale-down&content-scaling=fixed)\n- U46 Completed v04 — user web `86:10429`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-10429&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-10429&scaling=scale-down&content-scaling=fixed)\n- U48 Completed v05 — user app `1798:911`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-911&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-911&scaling=scale-down&content-scaling=fixed)\n- U50 Under Review (حجز pending) — user app `1798:1273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1273&scaling=scale-down&content-scaling=fixed)\n- U52 Scheduled «مجدول» — user app `1798:1647`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1647&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1647&scaling=scale-down&content-scaling=fixed)\n- U53 Incomplete «لم يكتمل» — user app `1798:1774`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1774&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1774&scaling=scale-down&content-scaling=fixed)\n- U53 Incomplete «لم يكتمل» — user web `1877:5143`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1877-5143&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1877-5143&scaling=scale-down&content-scaling=fixed)\n- U54 Laboratory Testing — user app `2202:5144`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5144&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5144&scaling=scale-down&content-scaling=fixed)\n- U54 Laboratory Testing — user web `1852:11297`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-11297&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-11297&scaling=scale-down&content-scaling=fixed)\n- U55 Processing and Separation — user app `2202:5256`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5256&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5256&scaling=scale-down&content-scaling=fixed)\n- U55 Processing and Separation — user web `1852:11465`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-11465&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-11465&scaling=scale-down&content-scaling=fixed)\n- U56 Incomplete v02 — user app `2202:5368`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5368&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5368&scaling=scale-down&content-scaling=fixed)\n- W2 Ready for Use (web) — user web `1852:11129`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-11129&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-11129&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id · example: `14`\n\n### Query params\n- `record_type` — optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type · example: `donation`\n\n\n## Behaviour notes\n**Steps:**\n1. يحمّل السجل حسب `record_type` (`donation` افتراضي أو `appointment`).\n2. يرجع الحالة الموحدة + المركز + الحي + التاريخ + النوع + الفصيلة + الوقت + `stage` (للتبرع الجاري) + `incomplete_message` + `deferred_until_text`.\n3. `action_buttons`: `track` (متاح عند وجود مرحلة؛ معطّل مع «لا يتوفر تتبع لهذه الحالة» للمجدول/قيد المراجعة/لم يكتمل).\n\n**Business rules / constraints:**\n- «لم يكتمل»: رسالة عامة فقط «لم يكتمل التبرع — يرجى مراجعة المركز» (لا يُكشف سبب الإيقاف الطبي) + «يمكنك التبرع بعد تاريخ X» عند الاستبعاد المؤقت.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (record_type) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | سجل لمستخدم آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — donation in lab_testing",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}?record_type=donation",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"record_type\": \"donation\",\n    \"id\": 363,\n    \"code\": \"DON-2610-018\",\n    \"display_status\": {\n      \"value\": \"in_stage\",\n      \"label\": \"قيد اختبارات المختبر\",\n      \"color\": \"#0EA5E9\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"branch\": {\n      \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n      \"district\": \"السليمانية\"\n    },\n    \"date\": \"2026-10-15\",\n    \"time\": \"10:08 ص\",\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"stage\": {\n      \"value\": \"lab_testing\",\n      \"label\": \"اختبارات المختبر\"\n    },\n    \"stage_text\": \"مرحلة وحدة الدم: قيد اختبارات المختبر\",\n    \"incomplete_message\": null,\n    \"deferred_until_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"track\",\n        \"label\": \"تتبع وحدة الدم\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/363/tracking\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"track_unavailable_text\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — `record_type=appointment` scheduled (no tracking)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}?record_type=appointment",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"record_type\": \"appointment\",\n    \"id\": 417,\n    \"code\": \"BK-2610-059\",\n    \"display_status\": {\n      \"value\": \"scheduled\",\n      \"label\": \"مجدول\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"branch\": {\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"date\": \"2026-10-26\",\n    \"time\": \"10:00 ص\",\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"stage\": null,\n    \"stage_text\": null,\n    \"incomplete_message\": null,\n    \"deferred_until_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"track\",\n        \"label\": \"تتبع وحدة الدم\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/0/tracking\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ],\n    \"track_unavailable_text\": \"لا يتوفر تتبع لهذه الحالة\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — stopped → incomplete + deferred date",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"record_type\": \"donation\",\n    \"id\": 378,\n    \"code\": \"DON-2610-033\",\n    \"display_status\": {\n      \"value\": \"incomplete\",\n      \"label\": \"لم يكتمل\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"branch\": {\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"date\": \"2026-10-12\",\n    \"time\": \"09:11 ص\",\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"B+\",\n      \"label\": \"B+\"\n    },\n    \"stage\": null,\n    \"stage_text\": null,\n    \"incomplete_message\": \"لم يكتمل التبرع — يرجى مراجعة المركز\",\n    \"deferred_until_text\": \"يمكنك التبرع بعد 18 ديسمبر 2026\",\n    \"action_buttons\": [\n      {\n        \"key\": \"track\",\n        \"label\": \"تتبع وحدة الدم\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations/378/tracking\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ],\n    \"track_unavailable_text\": \"لا يتوفر تتبع لهذه الحالة\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (record_type)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}?record_type=nope",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد نوع السجل غير صالح.\",\n  \"errors\": {\n    \"record_type\": [\n      \"حقل المحدد نوع السجل غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — سجل لمستخدم آخر",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}?record_type=donation",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation or appointment of current user · السجل · source: GET {{base_url}}donations → data.data[].id"
                            }
                          ],
                          "query": [
                            {
                              "key": "record_type",
                              "value": "donation",
                              "description": "optional · nullable|in:donation,appointment (default donation) · نوع السجل من القائمة · source: GET {{base_url}}donations → record_type",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "donation-tracking",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"tracking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_date\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"current_stage\"); pm.expect(o).to.have.property(\"current_status_text\"); pm.expect(o).to.have.property(\"last_update\"); pm.expect(o).to.have.property(\"progress_percent\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"privacy_note\"); pm.expect(o).to.have.property(\"stages\"); });",
                          "pm.test(\"the seven stages with colored states (+ the «used» step), never the staff notes\", () => { const d = pm.response.json().data; pm.expect(d.stages.length).to.be.within(7, 8); d.stages.forEach((s) => { pm.expect(s).to.have.property(\"key\"); pm.expect(s.state).to.have.property(\"bg_color\"); pm.expect(s).to.have.property(\"started_at\"); pm.expect(s).to.have.property(\"completed_at\"); pm.expect(s).to.not.have.property(\"notes\"); }); pm.expect(d.progress_percent).to.be.within(0, 100); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}donations/{id}/tracking",
                      "host": [
                        "{{base_url}}donations"
                      ],
                      "path": [
                        "{id}",
                        "tracking"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{donation_id}}",
                          "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                        }
                      ]
                    },
                    "description": "## Purpose\nمسار وحدة الدم بالمراحل السبع وأوقاتها.\n\n## Screens\n- U49 Blood Unit Tracking (جاهز) — user app `1798:1027`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1027&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1027&scaling=scale-down&content-scaling=fixed)\n- U49 Blood Unit Tracking (جاهز) — user web `1852:10843`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-10843&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1852-10843&scaling=scale-down&content-scaling=fixed)\n- U49 Blood Unit Tracking (جاهز) — user web `1897:24176`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1897-24176&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1897-24176&scaling=scale-down&content-scaling=fixed)\n- U49 Blood Unit Tracking (جاهز) — user web `1897:23894`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1897-23894&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1897-23894&scaling=scale-down&content-scaling=fixed)\n- U51 Tracking v02 «تم استخدام وحدة الدم بنجاح» — user app `1798:1401`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1401&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-1401&scaling=scale-down&content-scaling=fixed)\n- U51 Tracking v02 «تم استخدام وحدة الدم بنجاح» — user web `86:9656`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9656&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9656&scaling=scale-down&content-scaling=fixed)\n- U135 Tracking v03 — user app `1798:3113`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-3113&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1798-3113&scaling=scale-down&content-scaling=fixed)\n- U149 Tracking v04 (57%) — user app `2202:5746`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5746&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-5746&scaling=scale-down&content-scaling=fixed)\n- W5 Tracking (web — 4-step legacy layout, grouped client-side) — user web `86:9158`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9158&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-9158&scaling=scale-down&content-scaling=fixed)\n- W5 Tracking (web — 4-step legacy layout, grouped client-side) — user web `86:10154`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-10154&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-10154&scaling=scale-down&content-scaling=fixed)\n- W5 Tracking (web — 4-step legacy layout, grouped client-side) — user web `86:10652`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-10652&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-10652&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation) · example: `14`\n\n\n## Behaviour notes\n**Steps:**\n1. للتبرعات فقط (in_progress/completed/used) — stopped → 409 «لا يتوفر تتبع».\n2. `stages[]` = المراحل السبع بالترتيب مع `state` (done/current/pending ملوّن) + `started_at`/`completed_at` من `donation_stage_logs`؛ عند `used` تُلحق مرحلة «تم الاستخدام» بوقتها.\n3. `progress_percent` = المراحل المكتملة / 7 (× 100، 57% = 4/7).\n4. `current_status_text`, `last_update`, `privacy_note` (نص ثابت lang)، المركز.\n\n**Business rules / constraints:**\n- ملاحظات الموظف على المراحل **لا** تُرجع للمتبرع.\n- الويب W5 يجمع المراحل في 4 خطوات client-side (جمع/فحص/جاهز/استخدام) — نفس الـ API.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | التبرع موقوف | `donation.no_tracking` | لا يتوفر تتبع لهذه الحالة | Tracking is not available for this status |\n| 404 | تبرع لمستخدم آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}/tracking",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}",
                            "tracking"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 363,\n    \"code\": \"DON-2407-009\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_date\": \"2024-07-14\",\n    \"donation_date_text\": \"الأحد، ١٤ يوليو ٢٠٢٤\",\n    \"status\": {\n      \"value\": \"completed\",\n      \"label\": \"مكتمل\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"current_stage\": {\n      \"value\": \"ready_for_use\",\n      \"label\": \"جاهز للاستخدام\"\n    },\n    \"current_status_text\": \"مكتمل\",\n    \"last_update\": \"2024-07-18T09:42:00+00:00\",\n    \"last_update_text\": \"١٨ يوليو ٢٠٢٤\",\n    \"progress_percent\": 100,\n    \"branch\": {\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"privacy_note\": \"لا تُشارك بيانات المستفيد حفاظاً على الخصوصية\",\n    \"stages\": [\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2024-07-14T09:02:00+00:00\",\n        \"started_at_text\": \"١٤ يوليو ٢٠٢٤ · ٠٩:٠٢ ص\",\n        \"completed_at\": \"2024-07-14T09:12:00+00:00\",\n        \"completed_at_text\": \"١٤ يوليو ٢٠٢٤ · ٠٩:١٢ ص\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2024-07-14T09:12:00+00:00\",\n        \"started_at_text\": \"١٤ يوليو ٢٠٢٤ · ٠٩:١٢ ص\",\n        \"completed_at\": \"2024-07-14T09:42:00+00:00\",\n        \"completed_at_text\": \"١٤ يوليو ٢٠٢٤ · ٠٩:٤٢ ص\"\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2024-07-14T09:42:00+00:00\",\n        \"started_at_text\": \"١٤ يوليو ٢٠٢٤ · ٠٩:٤٢ ص\",\n        \"completed_at\": \"2024-07-15T11:02:00+00:00\",\n        \"completed_at_text\": \"١٥ يوليو ٢٠٢٤ · ١١:٠٢ ص\"\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2024-07-15T11:02:00+00:00\",\n        \"started_at_text\": \"١٥ يوليو ٢٠٢٤ · ١١:٠٢ ص\",\n        \"completed_at\": \"2024-07-16T11:02:00+00:00\",\n        \"completed_at_text\": \"١٦ يوليو ٢٠٢٤ · ١١:٠٢ ص\"\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2024-07-16T11:02:00+00:00\",\n        \"started_at_text\": \"١٦ يوليو ٢٠٢٤ · ١١:٠٢ ص\",\n        \"completed_at\": \"2024-07-17T10:22:00+00:00\",\n        \"completed_at_text\": \"١٧ يوليو ٢٠٢٤ · ١٠:٢٢ ص\"\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2024-07-17T10:22:00+00:00\",\n        \"started_at_text\": \"١٧ يوليو ٢٠٢٤ · ١٠:٢٢ ص\",\n        \"completed_at\": \"2024-07-18T09:42:00+00:00\",\n        \"completed_at_text\": \"١٨ يوليو ٢٠٢٤ · ٠٩:٤٢ ص\"\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"جاهز للاستخدام\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2024-07-18T09:42:00+00:00\",\n        \"started_at_text\": \"١٨ يوليو ٢٠٢٤ · ٠٩:٤٢ ص\",\n        \"completed_at\": \"2024-07-18T09:42:00+00:00\",\n        \"completed_at_text\": \"١٨ يوليو ٢٠٢٤ · ٠٩:٤٢ ص\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}/tracking",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}",
                            "tracking"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 359,\n    \"code\": \"DON-2306-001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_date\": \"2023-06-10\",\n    \"donation_date_text\": \"Saturday، 10 June 2023\",\n    \"status\": {\n      \"value\": \"completed\",\n      \"label\": \"Completed\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"current_stage\": {\n      \"value\": \"ready_for_use\",\n      \"label\": \"Ready for use\"\n    },\n    \"current_status_text\": \"Completed\",\n    \"last_update\": \"2023-06-14T09:43:00+00:00\",\n    \"last_update_text\": \"14 June 2023\",\n    \"progress_percent\": 100,\n    \"branch\": {\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"privacy_note\": \"The recipient's data is not shared, to protect privacy\",\n    \"stages\": [\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"Donation received\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2023-06-10T09:03:00+00:00\",\n        \"started_at_text\": \"10 June 2023 · 09:03 AM\",\n        \"completed_at\": \"2023-06-10T09:13:00+00:00\",\n        \"completed_at_text\": \"10 June 2023 · 09:13 AM\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"Initial screening\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2023-06-10T09:13:00+00:00\",\n        \"started_at_text\": \"10 June 2023 · 09:13 AM\",\n        \"completed_at\": \"2023-06-10T09:43:00+00:00\",\n        \"completed_at_text\": \"10 June 2023 · 09:43 AM\"\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"Lab testing\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2023-06-10T09:43:00+00:00\",\n        \"started_at_text\": \"10 June 2023 · 09:43 AM\",\n        \"completed_at\": \"2023-06-11T11:03:00+00:00\",\n        \"completed_at_text\": \"11 June 2023 · 11:03 AM\"\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"Processing & separation\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2023-06-11T11:03:00+00:00\",\n        \"started_at_text\": \"11 June 2023 · 11:03 AM\",\n        \"completed_at\": \"2023-06-12T11:03:00+00:00\",\n        \"completed_at_text\": \"12 June 2023 · 11:03 AM\"\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"Quality assurance\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2023-06-12T11:03:00+00:00\",\n        \"started_at_text\": \"12 June 2023 · 11:03 AM\",\n        \"completed_at\": \"2023-06-13T10:23:00+00:00\",\n        \"completed_at_text\": \"13 June 2023 · 10:23 AM\"\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"Storage\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2023-06-13T10:23:00+00:00\",\n        \"started_at_text\": \"13 June 2023 · 10:23 AM\",\n        \"completed_at\": \"2023-06-14T09:43:00+00:00\",\n        \"completed_at_text\": \"14 June 2023 · 09:43 AM\"\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"Ready for use\"\n        },\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2023-06-14T09:43:00+00:00\",\n        \"started_at_text\": \"14 June 2023 · 09:43 AM\",\n        \"completed_at\": \"2023-06-14T09:43:00+00:00\",\n        \"completed_at_text\": \"14 June 2023 · 09:43 AM\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — التبرع موقوف",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}/tracking",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}",
                            "tracking"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يتوفر تتبع لهذه الحالة\",\n  \"key\": \"no_tracking\"\n}"
                    },
                    {
                      "name": "❌ 404 — تبرع لمستخدم آخر",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}/tracking",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}",
                            "tracking"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}/tracking",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}",
                            "tracking"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}/tracking",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}",
                            "tracking"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donations/{id}/tracking",
                          "host": [
                            "{{base_url}}donations"
                          ],
                          "path": [
                            "{id}",
                            "tracking"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{donation_id}}",
                              "description": "required · donation of current user · التبرع · source: GET {{base_url}}donations (record_type=donation)"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `donations` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "appointments",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"appointment cards (lean) with the fixed buttons\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"day_name\"); pm.expect(o).to.have.property(\"time\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                              "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                              "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"appointment_id\", l[0].id); pm.environment.set(\"appointment_id\", l[0].id); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appointments",
                          "host": [
                            "{{base_url}}appointments"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "tab",
                              "value": "upcoming",
                              "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `id` الحجز للتفاصيل بـ `record_type=appointment` (عنصر `record_type=appointment` في سجل التبرعات) — قائمة مواعيدي (القادمة/السجل).\n\n## Screens\n- U61 Appointments (القادمة) — user app `424:3640`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3640&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3640&scaling=scale-down&content-scaling=fixed)\n- U61 Appointments (القادمة) — user web `89:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2&scaling=scale-down&content-scaling=fixed)\n- U62 Appointments (السجل) — user app `424:10158`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10158&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10158&scaling=scale-down&content-scaling=fixed)\n- U62 Appointments (السجل) — user web `89:243`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-243&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-243&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Query params\n- `tab` — optional · nullable|in:upcoming,history (default upcoming) · التبويب · example: `upcoming`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `tab=upcoming` → pending/confirmed بتاريخ ≥ الآن (ترتيب تصاعدي) — عملياً سجل واحد (C4).\n2. `tab=history` → rejected/cancelled/expired/attended/no_show + الماضي (ترتيب تنازلي).\n3. لكل عنصر `action_buttons` (نفس المجموعة الثابتة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (tab) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — upcoming (main donor)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}appointments",
                              "host": [
                                "{{base_url}}appointments"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "tab",
                                  "value": "upcoming",
                                  "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 399,\n        \"code\": \"BK-2610-044\",\n        \"date\": \"2026-10-25\",\n        \"day_name\": \"الأحد\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 1,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 1\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — history",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}appointments?tab=history",
                              "host": [
                                "{{base_url}}appointments"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "tab",
                                  "value": "upcoming",
                                  "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 398,\n        \"code\": \"BK-2610-043\",\n        \"date\": \"2026-10-15\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-15T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/398/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/398/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.693,46.715\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/363?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 397,\n        \"code\": \"BK-2610-042\",\n        \"date\": \"2026-10-08\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-10-08T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/397/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/397/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/362?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 396,\n        \"code\": \"BK-2609-031\",\n        \"date\": \"2026-09-10\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-09-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/396/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/396/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/361?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 391,\n        \"code\": \"BK-2606-015\",\n        \"date\": \"2026-06-10\",\n        \"day_name\": \"الأربعاء\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-06-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/391/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/391/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/360?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 390,\n        \"code\": \"BK-2602-014\",\n        \"date\": \"2026-03-02\",\n        \"day_name\": \"الاثنين\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-03-02T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/390/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/390/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/359?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 389,\n        \"code\": \"BK-2511-012\",\n        \"date\": \"2025-11-22\",\n        \"day_name\": \"السبت\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-11-22T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/389/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/389/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/358?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 395,\n        \"code\": \"BK-2511-013\",\n        \"date\": \"2025-11-15\",\n        \"day_name\": \"السبت\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2025-11-15T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/395/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/395/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 388,\n        \"code\": \"BK-2508-014\",\n        \"date\": \"2025-08-14\",\n        \"day_name\": \"الخميس\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-08-14T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/388/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/388/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/357?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 387,\n        \"code\": \"BK-2504-008\",\n        \"date\": \"2025-05-06\",\n        \"day_name\": \"الثلاثاء\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2025-05-06T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/387/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/387/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.693,46.715\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/356?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 394,\n        \"code\": \"BK-2504-009\",\n        \"date\": \"2025-04-29\",\n        \"day_name\": \"الثلاثاء\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2025-04-29T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/394/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/394/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 386,\n        \"code\": \"BK-2501-006\",\n        \"date\": \"2025-01-26\",\n        \"day_name\": \"الأحد\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-01-26T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/386/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/386/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/355?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 385,\n        \"code\": \"BK-2410-006\",\n        \"date\": \"2024-10-18\",\n        \"day_name\": \"الجمعة\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2024-10-18T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 8,\n          \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n          \"district\": \"العكيشية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/385/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/385/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.66,46.71\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/354?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 393,\n        \"code\": \"BK-2410-007\",\n        \"date\": \"2024-10-12\",\n        \"day_name\": \"السبت\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2024-10-12T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"no_show\",\n          \"label\": \"لم يحضر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/393/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/393/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 384,\n        \"code\": \"BK-2407-005\",\n        \"date\": \"2024-07-10\",\n        \"day_name\": \"الأربعاء\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2024-07-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n          \"district\": \"العليا\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/384/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/384/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/353?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 383,\n        \"code\": \"BK-2403-004\",\n        \"date\": \"2024-04-01\",\n        \"day_name\": \"الاثنين\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2024-04-01T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n          \"district\": \"السليمانية\",\n          \"city\": \"الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/383/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"تعديل الموعد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/383/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"فتح الخريطة\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.693,46.715\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/352?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 19,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}appointments",
                              "host": [
                                "{{base_url}}appointments"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "tab",
                                  "value": "upcoming",
                                  "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 399,\n        \"code\": \"BK-2610-044\",\n        \"date\": \"2026-10-25\",\n        \"day_name\": \"Sunday\",\n        \"time\": \"10:00 AM\",\n        \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n          \"district\": \"Olaya\",\n          \"city\": \"Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel appointment\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reschedule\",\n            \"label\": \"Reschedule\",\n            \"method\": \"POST\",\n            \"endpoint\": \"appointments/399/reschedule\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"open_map\",\n            \"label\": \"Open map\",\n            \"method\": \"GET\",\n            \"endpoint\": \"geo:24.6948,46.6842\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"View donation\",\n            \"method\": \"GET\",\n            \"endpoint\": \"donations/0?record_type=donation\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 1,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 1\n    }\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (tab)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}appointments?tab=other",
                              "host": [
                                "{{base_url}}appointments"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "tab",
                                  "value": "upcoming",
                                  "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد التبويب غير صالح.\",\n  \"errors\": {\n    \"tab\": [\n      \"حقل المحدد التبويب غير صالح.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}appointments",
                              "host": [
                                "{{base_url}}appointments"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "tab",
                                  "value": "upcoming",
                                  "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}appointments",
                              "host": [
                                "{{base_url}}appointments"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "tab",
                                  "value": "upcoming",
                                  "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Precondition Required",
                          "code": 428,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}appointments",
                              "host": [
                                "{{base_url}}appointments"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "tab",
                                  "value": "upcoming",
                                  "description": "optional · nullable|in:upcoming,history (default upcoming) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/donations",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "donations",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ التبرعات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: donations (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"donations\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/appointments",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الحجوزات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appointments (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "appeals",
              "description": "Flow `appeals` — 3 endpoints (sprint 6). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "appeals",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"donor-safe appeal cards\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"hospital\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"district\"); pm.expect(o).to.have.property(\"urgency\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"medical_message_excerpt\"); pm.expect(o).to.have.property(\"published_ago\"); pm.expect(o).to.have.property(\"matches_my_blood_type\"); } });",
                          "pm.test(\"paginated + active count\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); pm.expect(o).to.have.property(\"meta\"); });",
                          "pm.test(\"active_count\", () => { const o = pm.response.json().data.meta; pm.expect(o).to.have.property(\"active_count\"); });",
                          "pm.test(\"never the patient, the file number or the requester\", () => { const l = pm.response.json().data.data; l.forEach((a) => [\"patient_name\", \"file_no\", \"requester\", \"requester_name\", \"case_description\", \"diagnosis\"].forEach((k) => pm.expect(a).to.not.have.property(k))); });",
                          "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"appeal_id\", l[0].id); pm.environment.set(\"appeal_id\", l[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appeals",
                      "host": [
                        "{{base_url}}appeals"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "city_id",
                          "value": "1",
                          "description": "optional · nullable|exists:cities,id or \"all\" · المدينة · source: GET {{base_url}}cities",
                          "disabled": true
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types",
                          "disabled": true
                        },
                        {
                          "key": "urgency",
                          "value": "urgent",
                          "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الاستعجال · source: GET {{base_url}}lookups/appeal-urgencies",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة النداءات الطارئة المرئية للمتبرعين.\n\n## Screens\n- U39 Emergency Appeals — user app `424:4531`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4531&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4531&scaling=scale-down&content-scaling=fixed)\n- U39 Emergency Appeals — user web `84:4840`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-4840&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-4840&scaling=scale-down&content-scaling=fixed)\n- U105 Assistant / Matching Appeals — user app `767:1106`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1106&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-1106&scaling=scale-down&content-scaling=fixed)\n- U105 Assistant / Matching Appeals — user web `825:12284`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-12284&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-12284&scaling=scale-down&content-scaling=fixed)\n- G-06 فلتر المدينة/الفصيلة + «مناسب لفصيلتك» (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Query params\n- `city_id` — optional · nullable|exists:cities,id or \"all\" · المدينة · source: GET {{base_url}}cities · example: `1`\n- `blood_type` — optional · nullable|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types · example: `O-`\n- `urgency` — optional · nullable|Rule::enum(AppealUrgency::class) · الاستعجال · source: GET {{base_url}}lookups/appeal-urgencies · example: `urgent`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. النداءات المرئية للمتبرعين: `active` + `paused` (الموقوف يظهر بزر معطّل) — مصدر مستشفى أو مستخدم معتمد.\n2. الافتراضي: مدينة المستخدم (لو مسجّل) — `city_id` يتجاوزها؛ `city_id=all` لكل المدن.\n3. فلاتر: `blood_type`, `urgency`, `donation_type_id`.\n4. `matches_my_blood_type` = فصيلة المستخدم متوافقة (`blood_compatibilities` للنوع) — للزائر null.\n5. الترتيب: الاستعجال (حرج → روتيني) ثم الأحدث.\n6. `meta.active_count` = «3 نداءات نشطة».\n\n**Business rules / constraints:**\n- حقول المريض/صاحب النداء/رقم الملف **لا تُرجع للمتبرعين** (brief §7.2).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (`city_id` ليس رقم مدينة موجودة ولا `all`، `blood_type`، `urgency`) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success as a guest (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals?city_id=all",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id or \"all\" · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الاستعجال · source: GET {{base_url}}lookups/appeal-urgencies",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"code\": \"APL-2610-001\",\n        \"hospital\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"السليمانية\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"title\": \"صفائح دموية فصيلة A+ — حرج\",\n        \"medical_message_excerpt\": \"مريض سرطان - بحاجة صفائح دموية\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة A+ — حرج\",\n        \"medical_message_excerpt\": \"حالة فقر دم حادة\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 13,\n        \"code\": \"APL-2610-005\",\n        \"hospital\": {\n          \"id\": 8,\n          \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العكيشية\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة O- — حرج\",\n        \"medical_message_excerpt\": \"نقص حاد في فصيلة O- على مستوى المدينة\",\n        \"published_ago\": \"منذ يومين\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 22,\n        \"code\": \"APL-2610-011\",\n        \"hospital\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"city\": \"الدمام\",\n        \"district\": \"الشاطئ\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"paused\",\n          \"label\": \"معلق\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"title\": \"صفائح دموية فصيلة AB+ — حرج\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة سارة في أقرب وقت ممكن\",\n        \"published_ago\": \"منذ 6 أيام\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 10,\n        \"code\": \"APL-2610-003\",\n        \"hospital\": {\n          \"id\": 6,\n          \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"الدرعية\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة B- — عاجل\",\n        \"medical_message_excerpt\": \"عملية ولادة قيصرية مجدولة — مطلوب متبرعون\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة O+ — عاجل\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة خالد في أقرب وقت ممكن\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 2,\n        \"code\": \"APL-2608-002\",\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"city\": \"جدة\",\n        \"district\": \"الروضة\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"title\": \"صفائح دموية فصيلة AB+ — عاجل\",\n        \"medical_message_excerpt\": \"مريض يتلقى علاجاً كيميائياً — يلزم صفائح طازجة\",\n        \"published_ago\": \"منذ يومين\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 1,\n        \"code\": \"APL-2608-001\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة O- — عاجل\",\n        \"medical_message_excerpt\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n        \"published_ago\": \"منذ 3 أيام\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة B+ — عاجل\",\n        \"medical_message_excerpt\": \"اكتمل العدد ثم أُلغي أحد المواعيد فعاد النداء نشطاً\",\n        \"published_ago\": \"منذ 4 أيام\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"city\": \"جدة\",\n        \"district\": \"النزهة\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة A- — عاجل\",\n        \"medical_message_excerpt\": \"صديقتي تحتاج 5 وحدات دم بعد حادث سير\",\n        \"published_ago\": \"منذ 4 أيام\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 9,\n        \"code\": \"APL-2610-002\",\n        \"hospital\": {\n          \"id\": 6,\n          \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"الدرعية\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة B+ — روتيني\",\n        \"medical_message_excerpt\": \"عملية مخطط لها - احتياطي دم مطلوب\",\n        \"published_ago\": \"منذ يومين\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 20,\n        \"code\": \"APL-2610-010\",\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"city\": \"جدة\",\n        \"district\": \"الروضة\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة A+ — روتيني\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة هند في أقرب وقت ممكن\",\n        \"published_ago\": \"منذ يومين\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 31,\n        \"code\": \"APL-2610-018\",\n        \"hospital\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"city\": \"الدمام\",\n        \"district\": \"الشاطئ\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"title\": \"بلازما فصيلة AB- — روتيني\",\n        \"medical_message_excerpt\": \"تجديد مخزون البلازما بعد توقف مؤقت\",\n        \"published_ago\": \"منذ 3 أيام\",\n        \"matches_my_blood_type\": null\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 13,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 13\n    },\n    \"meta\": {\n      \"active_count\": 12\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success as a guest (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals?city_id=all",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id or \"all\" · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الاستعجال · source: GET {{base_url}}lookups/appeal-urgencies",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"code\": \"APL-2610-001\",\n        \"hospital\": {\n          \"id\": 5,\n          \"name\": \"King Fahad Medical City — Main Building\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Sulaimaniyah\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"title\": \"Platelets, blood type A+ — Critical\",\n        \"medical_message_excerpt\": \"مريض سرطان - بحاجة صفائح دموية\",\n        \"published_ago\": \"1 day ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Olaya\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type A+ — Critical\",\n        \"medical_message_excerpt\": \"حالة فقر دم حادة\",\n        \"published_ago\": \"1 day ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 13,\n        \"code\": \"APL-2610-005\",\n        \"hospital\": {\n          \"id\": 8,\n          \"name\": \"Central Blood Bank — Central Blood Bank Donation Center\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Al Okayshiyah\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type O- — Critical\",\n        \"medical_message_excerpt\": \"نقص حاد في فصيلة O- على مستوى المدينة\",\n        \"published_ago\": \"2 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 22,\n        \"code\": \"APL-2610-011\",\n        \"hospital\": {\n          \"id\": 3,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\"\n        },\n        \"city\": \"Dammam\",\n        \"district\": \"Al Shati\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"paused\",\n          \"label\": \"Paused\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"title\": \"Platelets, blood type AB+ — Critical\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة سارة في أقرب وقت ممكن\",\n        \"published_ago\": \"6 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 10,\n        \"code\": \"APL-2610-003\",\n        \"hospital\": {\n          \"id\": 6,\n          \"name\": \"King Khalid University Hospital — Outpatient Clinics\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Diriyah\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type B- — Urgent\",\n        \"medical_message_excerpt\": \"عملية ولادة قيصرية مجدولة — مطلوب متبرعون\",\n        \"published_ago\": \"1 day ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Olaya\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type O+ — Urgent\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة خالد في أقرب وقت ممكن\",\n        \"published_ago\": \"1 day ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 2,\n        \"code\": \"APL-2608-002\",\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"city\": \"Jeddah\",\n        \"district\": \"Al Rawdah\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"title\": \"Platelets, blood type AB+ — Urgent\",\n        \"medical_message_excerpt\": \"مريض يتلقى علاجاً كيميائياً — يلزم صفائح طازجة\",\n        \"published_ago\": \"2 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 1,\n        \"code\": \"APL-2608-001\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Olaya\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type O- — Urgent\",\n        \"medical_message_excerpt\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n        \"published_ago\": \"3 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Olaya\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type B+ — Urgent\",\n        \"medical_message_excerpt\": \"اكتمل العدد ثم أُلغي أحد المواعيد فعاد النداء نشطاً\",\n        \"published_ago\": \"4 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"city\": \"Jeddah\",\n        \"district\": \"Al Nuzha\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type A- — Urgent\",\n        \"medical_message_excerpt\": \"صديقتي تحتاج 5 وحدات دم بعد حادث سير\",\n        \"published_ago\": \"4 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 9,\n        \"code\": \"APL-2610-002\",\n        \"hospital\": {\n          \"id\": 6,\n          \"name\": \"King Khalid University Hospital — Outpatient Clinics\"\n        },\n        \"city\": \"Riyadh\",\n        \"district\": \"Diriyah\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type B+ — Routine\",\n        \"medical_message_excerpt\": \"عملية مخطط لها - احتياطي دم مطلوب\",\n        \"published_ago\": \"2 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 20,\n        \"code\": \"APL-2610-010\",\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"city\": \"Jeddah\",\n        \"district\": \"Al Rawdah\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"title\": \"Whole Blood, blood type A+ — Routine\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة هند في أقرب وقت ممكن\",\n        \"published_ago\": \"2 days ago\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 31,\n        \"code\": \"APL-2610-018\",\n        \"hospital\": {\n          \"id\": 3,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\"\n        },\n        \"city\": \"Dammam\",\n        \"district\": \"Al Shati\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"Plasma\"\n        },\n        \"title\": \"Plasma, blood type AB- — Routine\",\n        \"medical_message_excerpt\": \"تجديد مخزون البلازما بعد توقف مؤقت\",\n        \"published_ago\": \"3 days ago\",\n        \"matches_my_blood_type\": null\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 13,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 13\n    },\n    \"meta\": {\n      \"active_count\": 12\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a donor token adds matches_my_blood_type",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id or \"all\" · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الاستعجال · source: GET {{base_url}}lookups/appeal-urgencies",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"code\": \"APL-2610-001\",\n        \"hospital\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"السليمانية\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"title\": \"صفائح دموية فصيلة A+ — حرج\",\n        \"medical_message_excerpt\": \"مريض سرطان - بحاجة صفائح دموية\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": false\n      },\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة A+ — حرج\",\n        \"medical_message_excerpt\": \"حالة فقر دم حادة\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": true\n      },\n      {\n        \"id\": 13,\n        \"code\": \"APL-2610-005\",\n        \"hospital\": {\n          \"id\": 8,\n          \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العكيشية\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة O- — حرج\",\n        \"medical_message_excerpt\": \"نقص حاد في فصيلة O- على مستوى المدينة\",\n        \"published_ago\": \"منذ يومين\",\n        \"matches_my_blood_type\": false\n      },\n      {\n        \"id\": 10,\n        \"code\": \"APL-2610-003\",\n        \"hospital\": {\n          \"id\": 6,\n          \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"الدرعية\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة B- — عاجل\",\n        \"medical_message_excerpt\": \"عملية ولادة قيصرية مجدولة — مطلوب متبرعون\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": false\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة O+ — عاجل\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة خالد في أقرب وقت ممكن\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": true\n      },\n      {\n        \"id\": 1,\n        \"code\": \"APL-2608-001\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة O- — عاجل\",\n        \"medical_message_excerpt\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n        \"published_ago\": \"منذ 3 أيام\",\n        \"matches_my_blood_type\": false\n      },\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة B+ — عاجل\",\n        \"medical_message_excerpt\": \"اكتمل العدد ثم أُلغي أحد المواعيد فعاد النداء نشطاً\",\n        \"published_ago\": \"منذ 4 أيام\",\n        \"matches_my_blood_type\": true\n      },\n      {\n        \"id\": 9,\n        \"code\": \"APL-2610-002\",\n        \"hospital\": {\n          \"id\": 6,\n          \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"الدرعية\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة B+ — روتيني\",\n        \"medical_message_excerpt\": \"عملية مخطط لها - احتياطي دم مطلوب\",\n        \"published_ago\": \"منذ يومين\",\n        \"matches_my_blood_type\": true\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    },\n    \"meta\": {\n      \"active_count\": 8\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — filtered (urgency, blood type)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals?city_id=all&urgency=critical",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id or \"all\" · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الاستعجال · source: GET {{base_url}}lookups/appeal-urgencies",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"code\": \"APL-2610-001\",\n        \"hospital\": {\n          \"id\": 5,\n          \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"السليمانية\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"title\": \"صفائح دموية فصيلة A+ — حرج\",\n        \"medical_message_excerpt\": \"مريض سرطان - بحاجة صفائح دموية\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العليا\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة A+ — حرج\",\n        \"medical_message_excerpt\": \"حالة فقر دم حادة\",\n        \"published_ago\": \"منذ يوم\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 13,\n        \"code\": \"APL-2610-005\",\n        \"hospital\": {\n          \"id\": 8,\n          \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\"\n        },\n        \"city\": \"الرياض\",\n        \"district\": \"العكيشية\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"title\": \"دم كامل فصيلة O- — حرج\",\n        \"medical_message_excerpt\": \"نقص حاد في فصيلة O- على مستوى المدينة\",\n        \"published_ago\": \"منذ يومين\",\n        \"matches_my_blood_type\": null\n      },\n      {\n        \"id\": 22,\n        \"code\": \"APL-2610-011\",\n        \"hospital\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"city\": \"الدمام\",\n        \"district\": \"الشاطئ\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"paused\",\n          \"label\": \"معلق\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"title\": \"صفائح دموية فصيلة AB+ — حرج\",\n        \"medical_message_excerpt\": \"نحتاج متبرعين لحالة سارة في أقرب وقت ممكن\",\n        \"published_ago\": \"منذ 6 أيام\",\n        \"matches_my_blood_type\": null\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 4,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 4\n    },\n    \"meta\": {\n      \"active_count\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (city_id, blood_type, urgency)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals?city_id=999999&blood_type=Z&urgency=x",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id or \"all\" · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الاستعجال · source: GET {{base_url}}lookups/appeal-urgencies",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد المدينة غير صالح. (and 2 more errors)\",\n  \"errors\": {\n    \"city_id\": [\n      \"حقل المحدد المدينة غير صالح.\"\n    ],\n    \"blood_type\": [\n      \"حقل المحدد فصيلة الدم غير صالح.\"\n    ],\n    \"urgency\": [\n      \"حقل المحدد نوع الحالة غير صالح.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"appeal details (donor-safe)\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"hospital\"); pm.expect(o).to.have.property(\"urgency\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"required_time\"); pm.expect(o).to.have.property(\"published_at\"); pm.expect(o).to.have.property(\"medical_message\"); pm.expect(o).to.have.property(\"response_state\"); pm.expect(o).to.have.property(\"can_respond\"); pm.expect(o).to.have.property(\"disabled_reason\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"one respond button; off with its reason when the donor cannot respond\", () => { const d = pm.response.json().data; pm.expect(d.action_buttons.map((b) => b.key)).to.eql([\"respond\"]); if (!d.can_respond) pm.expect(d.disabled_reason).to.be.a(\"string\"); [\"patient_name\", \"file_no\", \"requester\", \"diagnosis\"].forEach((k) => pm.expect(d).to.not.have.property(k)); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "optional · enable it to get the donor's personal fields (guest without it)",
                        "disabled": true
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appeals/{id}",
                      "host": [
                        "{{base_url}}appeals"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{appeal_id}}",
                          "description": "required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل النداء للمتبرع + حالة الاستجابة.\n\n## Screens\n- U41 Appeal Details — user app `2295:7916`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-7916&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-7916&scaling=scale-down&content-scaling=fixed)\n- U41 Appeal Details — user web `2295:8601`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-8601&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-8601&scaling=scale-down&content-scaling=fixed)\n- G-05 «الاستجابة موقوفة مؤقتاً» / «غير متوافق مع فصيلتك» (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nعام — بلا توكن. public + توكن اختياري (`auth.optional` — يضيف الحقول الشخصية لو أُرسل توكن مستخدم)\n- Middleware: `api.lang` · `auth.optional`\n\n## Parameters & fields\n### Path params\n- `id` — required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppealResource` (donor-safe): الاستعجال + الحالة، المستشفى، المدينة · الحي، الفصيلة، نوع الحالة، عدد الوحدات، النوع، الموعد المطلوب، وقت النشر، الرسالة الطبية.\n2. `response_state` (`AppealResponseState`): `open` · `capped` (موقوف مؤقتاً) · `incompatible` · `closed` (paused/fulfilled/closed).\n3. `can_respond` = active ∧ open ∧ compatible ∧ `booking/check` يسمح (للزائر: true → الضغط يطلب الدخول).\n4. `action_buttons` = [`respond` «أرغب بالتبرع»] مع `disabled_reason`.\n\n**Business rules / constraints:**\n- المخفي عن المتبرع: `file_no`, `patient_name`, `requester_*`, `case_description`, `diagnosis`.\n- نداء under_review/rejected → 404 للعامة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | نداء غير منشور/غير موجود | `messages.not_found` | العنصر غير موجود | Not found |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success as a guest (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"title\": \"دم كامل فصيلة O- — عاجل\",\n    \"patient\": {\n      \"file_no\": \"MRN-448201\",\n      \"patient_name\": null,\n      \"blood_type\": {\n        \"value\": \"O-\",\n        \"label\": \"O-\"\n      },\n      \"case_type\": {\n        \"value\": \"urgent\",\n        \"label\": \"عاجل\",\n        \"color\": \"#D97706\",\n        \"bg_color\": \"#FFFBEB\"\n      },\n      \"required_units\": 15,\n      \"required_units_text\": \"١٥ وحدة\",\n      \"donation_type\": {\n        \"id\": 1,\n        \"name\": \"دم كامل\"\n      }\n    },\n    \"location\": {\n      \"hospital\": {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n      },\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\",\n      \"required_time\": {\n        \"value\": \"asap\",\n        \"label\": \"في أقرب وقت\"\n      },\n      \"required_at\": null\n    },\n    \"requester\": {\n      \"relation\": null,\n      \"name\": null,\n      \"published_ago\": \"منذ 6 أيام\",\n      \"published_at\": \"2026-10-19T08:24:17+00:00\"\n    },\n    \"case_notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"matches_my_blood_type\": null,\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"متاح\"\n    },\n    \"can_respond\": true,\n    \"disabled_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"respond\",\n        \"label\": \"أرغب بالتبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"appeals/1/response-check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success as a donor (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"title\": \"Whole Blood, blood type O- — Urgent\",\n    \"patient\": {\n      \"file_no\": \"MRN-448201\",\n      \"patient_name\": null,\n      \"blood_type\": {\n        \"value\": \"O-\",\n        \"label\": \"O-\"\n      },\n      \"case_type\": {\n        \"value\": \"urgent\",\n        \"label\": \"Urgent\",\n        \"color\": \"#D97706\",\n        \"bg_color\": \"#FFFBEB\"\n      },\n      \"required_units\": 15,\n      \"required_units_text\": \"15 units\",\n      \"donation_type\": {\n        \"id\": 1,\n        \"name\": \"Whole Blood\"\n      }\n    },\n    \"location\": {\n      \"hospital\": {\n        \"id\": 1,\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n      },\n      \"city\": \"Riyadh\",\n      \"district\": \"Olaya\",\n      \"required_time\": {\n        \"value\": \"asap\",\n        \"label\": \"As soon as possible\"\n      },\n      \"required_at\": null\n    },\n    \"requester\": {\n      \"relation\": null,\n      \"name\": null,\n      \"published_ago\": \"6 days ago\",\n      \"published_at\": \"2026-10-19T08:24:17+00:00\"\n    },\n    \"case_notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"matches_my_blood_type\": false,\n    \"response_state\": {\n      \"value\": \"incompatible\",\n      \"label\": \"Incompatible blood type\"\n    },\n    \"can_respond\": false,\n    \"disabled_reason\": \"Your blood type isn't compatible with this appeal\",\n    \"action_buttons\": [\n      {\n        \"key\": \"respond\",\n        \"label\": \"I want to donate\",\n        \"method\": \"GET\",\n        \"endpoint\": \"appeals/1/response-check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a donor appeal: patient and requester now shown",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 19,\n    \"code\": \"APL-2610-010\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"title\": \"دم كامل فصيلة O+ — عاجل\",\n    \"patient\": {\n      \"file_no\": null,\n      \"patient_name\": \"خالد\",\n      \"blood_type\": {\n        \"value\": \"O+\",\n        \"label\": \"O+\"\n      },\n      \"case_type\": {\n        \"value\": \"urgent\",\n        \"label\": \"عاجل\",\n        \"color\": \"#D97706\",\n        \"bg_color\": \"#FFFBEB\"\n      },\n      \"required_units\": 3,\n      \"required_units_text\": \"٣ وحدات\",\n      \"donation_type\": {\n        \"id\": 1,\n        \"name\": \"دم كامل\"\n      }\n    },\n    \"location\": {\n      \"hospital\": {\n        \"id\": 1,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n      },\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\",\n      \"required_time\": {\n        \"value\": \"asap\",\n        \"label\": \"في أقرب وقت\"\n      },\n      \"required_at\": null\n    },\n    \"requester\": {\n      \"relation\": {\n        \"value\": \"father\",\n        \"label\": \"الأب\"\n      },\n      \"name\": \"عبدالله الشهري\",\n      \"published_ago\": \"منذ 4 أيام\",\n      \"published_at\": \"2026-10-20T21:25:23+00:00\"\n    },\n    \"case_notes\": \"نحتاج متبرعين لحالة خالد في أقرب وقت ممكن\",\n    \"matches_my_blood_type\": true,\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"متاح\"\n    },\n    \"can_respond\": false,\n    \"disabled_reason\": \"لديك موعد قائم بتاريخ 2026-10-25 — ألغِه أو عدّله أولاً\",\n    \"action_buttons\": [\n      {\n        \"key\": \"respond\",\n        \"label\": \"أرغب بالتبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"appeals/19/response-check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — paused: the button is off with the reason",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 22,\n    \"code\": \"APL-2610-013\",\n    \"status\": {\n      \"value\": \"paused\",\n      \"label\": \"معلق\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"urgency\": {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"blood_type\": {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\"\n    },\n    \"title\": \"صفائح دموية فصيلة AB+ — حرج\",\n    \"patient\": {\n      \"file_no\": null,\n      \"patient_name\": \"سارة\",\n      \"blood_type\": {\n        \"value\": \"AB+\",\n        \"label\": \"AB+\"\n      },\n      \"case_type\": {\n        \"value\": \"critical\",\n        \"label\": \"حرج\",\n        \"color\": \"#C8102E\",\n        \"bg_color\": \"#FEF2F2\"\n      },\n      \"required_units\": 2,\n      \"required_units_text\": \"وحدتان\",\n      \"donation_type\": {\n        \"id\": 2,\n        \"name\": \"صفائح دموية\"\n      }\n    },\n    \"location\": {\n      \"hospital\": {\n        \"id\": 3,\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n      },\n      \"city\": \"الدمام\",\n      \"district\": \"الشاطئ\",\n      \"required_time\": {\n        \"value\": \"asap\",\n        \"label\": \"في أقرب وقت\"\n      },\n      \"required_at\": null\n    },\n    \"requester\": {\n      \"relation\": {\n        \"value\": \"wife\",\n        \"label\": \"الزوجة\"\n      },\n      \"name\": \"نورة القحطاني\",\n      \"published_ago\": \"منذ أسبوع\",\n      \"published_at\": \"2026-10-15T18:14:23+00:00\"\n    },\n    \"case_notes\": \"نحتاج متبرعين لحالة سارة في أقرب وقت ممكن\",\n    \"matches_my_blood_type\": false,\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"النداء مغلق\"\n    },\n    \"can_respond\": false,\n    \"disabled_reason\": \"هذا النداء لم يعد يستقبل استجابات\",\n    \"action_buttons\": [\n      {\n        \"key\": \"respond\",\n        \"label\": \"أرغب بالتبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"appeals/22/response-check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — responding capped for now",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"APL-2610-003\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"B-\",\n      \"label\": \"B-\"\n    },\n    \"title\": \"دم كامل فصيلة B- — عاجل\",\n    \"patient\": {\n      \"file_no\": null,\n      \"patient_name\": null,\n      \"blood_type\": {\n        \"value\": \"B-\",\n        \"label\": \"B-\"\n      },\n      \"case_type\": {\n        \"value\": \"urgent\",\n        \"label\": \"عاجل\",\n        \"color\": \"#D97706\",\n        \"bg_color\": \"#FFFBEB\"\n      },\n      \"required_units\": 2,\n      \"required_units_text\": \"وحدتان\",\n      \"donation_type\": {\n        \"id\": 1,\n        \"name\": \"دم كامل\"\n      }\n    },\n    \"location\": {\n      \"hospital\": {\n        \"id\": 6,\n        \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\"\n      },\n      \"city\": \"الرياض\",\n      \"district\": \"الدرعية\",\n      \"required_time\": {\n        \"value\": \"asap\",\n        \"label\": \"في أقرب وقت\"\n      },\n      \"required_at\": null\n    },\n    \"requester\": {\n      \"relation\": null,\n      \"name\": null,\n      \"published_ago\": \"منذ 4 أيام\",\n      \"published_at\": \"2026-10-21T09:06:21+00:00\"\n    },\n    \"case_notes\": \"عملية ولادة قيصرية مجدولة — مطلوب متبرعون\",\n    \"matches_my_blood_type\": false,\n    \"response_state\": {\n      \"value\": \"capped\",\n      \"label\": \"موقوف مؤقتاً\"\n    },\n    \"can_respond\": false,\n    \"disabled_reason\": \"اكتمل عدد المستجيبين المطلوب مؤقتاً — بانتظار تأكيد المواعيد\",\n    \"action_buttons\": [\n      {\n        \"key\": \"respond\",\n        \"label\": \"أرغب بالتبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"appeals/10/response-check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — نداء غير منشور/غير موجود",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "optional · enable it to get the donor's personal fields (guest without it)",
                            "disabled": true
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · public appeal (active/paused/fulfilled/closed) · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-response-check",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"response check\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"can_respond\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"appeal\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"required_blood_type\"); pm.expect(o).to.have.property(\"check_text\"); });",
                          "pm.test(\"a refusal explains itself\", () => { const d = pm.response.json().data; pm.expect(d.can_respond).to.be.a(\"boolean\"); if (!d.can_respond) { pm.expect(d.reason).to.have.property(\"key\"); pm.expect(d.reason).to.have.property(\"message\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}appeals/{id}/response-check",
                      "host": [
                        "{{base_url}}appeals"
                      ],
                      "path": [
                        "{id}",
                        "response-check"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{appeal_id}}",
                          "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nهل يستطيع المستخدم الاستجابة لهذا النداء؟ (+ الفرع والنوع الثابتين).\n\n## Screens\n- U40 Appeal Response / Eligibility Check — user app `424:9553`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9553&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-9553&scaling=scale-down&content-scaling=fixed)\n- U40 Appeal Response / Eligibility Check — user web `84:5342`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-5342&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-5342&scaling=scale-down&content-scaling=fixed)\n- U40 Appeal Response / Eligibility Check — user web `84:5996`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-5996&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-5996&scaling=scale-down&content-scaling=fixed)\n- U40 Appeal Response / Eligibility Check — user web `84:6579`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-6579&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-6579&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user app `424:12843`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12843&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12843&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user web `2295:5274`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5274&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5274&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user web `84:2550`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2550&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2550&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:appeals,id · النداء · source: GET {{base_url}}appeals · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجمع: حالة النداء + `response_state` + توافق الفصيلة + حراس الحجز (`BookingEligibilityService`) للنوع المطلوب.\n2. يرجع `can_respond`, `reason{key,message}`, `branch` (ثابت)، `donation_type` (ثابت)، `required_blood_type`، نص التحقق.\n3. التالي: «متابعة الحجز» → تعليمات التحضير → التاريخ/الوقت بفرع ونوع ثابتين → `POST appointments` مع `appeal_id`.\n\n**Status / state transitions:** none (read-only).\n\n**Multi-step flow:** الاستجابة = (1) **هذا الفحص** → (2) `GET guidelines?type=preparation` → (3) `GET branches/{id}/available-dates` → (4) `GET branches/{id}/slots` → (5) `POST appointments {appeal_id, date, start_time}`.\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | نداء غير منشور | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"can_respond\": true,\n    \"reason\": null,\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"required_blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"check_text\": \"فصيلتك متوافقة مع هذا النداء ويمكنك متابعة الحجز\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"can_respond\": true,\n    \"reason\": null,\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"district\": \"Olaya\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"required_blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"check_text\": \"Your blood type is compatible with this appeal and you can continue to book\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — refused: the donor already has a booking (has_active)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"can_respond\": false,\n    \"reason\": {\n      \"key\": \"has_active\",\n      \"message\": \"لديك موعد قائم بتاريخ 2026-10-25 — ألغِه أو عدّله أولاً\"\n    },\n    \"appeal\": {\n      \"id\": 5,\n      \"code\": \"APL-2608-005\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"required_blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"check_text\": \"لديك موعد قائم بتاريخ 2026-10-25 — ألغِه أو عدّله أولاً\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — refused: the blood type is not compatible (incompatible)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"can_respond\": false,\n    \"reason\": {\n      \"key\": \"incompatible\",\n      \"message\": \"فصيلتك غير متوافقة مع هذا النداء\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"required_blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"check_text\": \"فصيلتك غير متوافقة مع هذا النداء\"\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — نداء غير منشور",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}appeals/{id}/response-check",
                          "host": [
                            "{{base_url}}appeals"
                          ],
                          "path": [
                            "{id}",
                            "response-check"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{appeal_id}}",
                              "description": "required · exists:appeals,id · النداء · source: GET {{base_url}}appeals"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `appeals` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/appeal-urgencies",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); pm.expect(o).to.have.property(\"hint\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-urgencies",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-urgencies"
                          ]
                        },
                        "description": "## Purpose\nمصدر `urgency` (الاستعجال: حرج / عاجل / روتيني) — قائمة درجات استعجال النداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P19 Create Appeal / Enter Details — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n- P10 Appeals filter — urgency — provider (web) `245:6635`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealUrgency` بالترتيب المعرّف في الـ enum عبر `AppealUrgency::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- ثلاث قيم فقط (C5): حرج/عاجل/روتيني — أي «عالي/متوسط/منخفض» في التصميم تُستبدل.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/appeal-urgencies",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "appeal-urgencies"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"hint\": \"إنقاذ حياة\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"hint\": \"خلال ساعات\"\n    },\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\",\n      \"hint\": \"حاجة مستقرة\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/appeals",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appeals",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ النداءات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appeals (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appeals\": 0\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "my-appeals",
              "description": "Flow `my-appeals` — 5 endpoints (sprint 6). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "my-appeals",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"own appeals (status, confirmed, hospital, patient, fixed buttons)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"urgency\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"confirmed_count\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"hospital\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"patient_name\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"the fixed owner buttons\", () => { const l = pm.response.json().data.data; if (l.length) pm.expect(l[0].action_buttons.map((b) => b.key)).to.eql([\"edit\", \"close\", \"create_new\"]); });",
                          "{ const l = pm.response.json().data.data; const a = l.find((x) => x.status.value === \"under_review\") || l[0]; if (a) { pm.collectionVariables.set(\"my_appeal_id\", a.id); pm.environment.set(\"my_appeal_id\", a.id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}my-appeals",
                      "host": [
                        "{{base_url}}my-appeals"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "status",
                          "value": "active",
                          "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nنداءات المستخدم بكل حالاتها.\n\n## Screens\n- U143 My Appeals — user app `1005:5705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-5705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-5705&scaling=scale-down&content-scaling=fixed)\n- U143 My Appeals — user web `1005:8341`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-8341&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-8341&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Query params\n- `status` — optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة · example: `active`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. نداءات المستخدم (`creator_type=User`) الأحدث أولاً بكل الحالات.\n2. كل عنصر: نوع الحالة، الحالة، الفصيلة، عدد الاستجابات (`confirmed_count`)، النوع، الوحدات، المستشفى · المدينة · المريض، الوقت + `action_buttons` (`edit`/`close`/`create_new`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n| 422 | فشل التحقق (status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 18,\n        \"code\": \"APL-2610-008\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"confirmed_count\": 1,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"required_units\": 3,\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"patient_name\": \"ماجد\",\n        \"created_at\": \"2026-10-03T17:45:59+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل النداء\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/18\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق النداء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/18/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"إنشاء نداء جديد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 17,\n        \"code\": \"APL-2609-003\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"confirmed_count\": 0,\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"required_units\": 3,\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"patient_name\": \"عبدالله\",\n        \"created_at\": \"2026-09-13T19:15:59+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل النداء\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/17\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق النداء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/17/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"إنشاء نداء جديد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 16,\n        \"code\": \"APL-2609-002\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"تم الاستيفاء\",\n          \"color\": \"#4B5563\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"confirmed_count\": 2,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"required_units\": 2,\n        \"hospital\": {\n          \"id\": 8,\n          \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\"\n        },\n        \"city\": \"الرياض\",\n        \"patient_name\": \"نورة\",\n        \"created_at\": \"2026-09-28T19:12:58+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل النداء\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/16\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق النداء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/16/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"إنشاء نداء جديد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"confirmed_count\": 3,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"required_units\": 5,\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"city\": \"جدة\",\n        \"patient_name\": \"سلمى\",\n        \"created_at\": \"2026-10-13T19:32:58+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل النداء\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق النداء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/15/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"إنشاء نداء جديد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 14,\n        \"code\": \"APL-2610-006\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"under_review\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"confirmed_count\": 0,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"required_units\": 1,\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"city\": \"الرياض\",\n        \"patient_name\": \"محمد\",\n        \"created_at\": \"2026-10-17T15:35:58+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل النداء\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/14\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق النداء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/14/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"إنشاء نداء جديد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 5,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 5\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 18,\n        \"code\": \"APL-2610-008\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"confirmed_count\": 1,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"required_units\": 3,\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"city\": \"Riyadh\",\n        \"patient_name\": \"ماجد\",\n        \"created_at\": \"2026-10-03T17:45:59+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit appeal\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/18\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/18/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"Create a new appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 17,\n        \"code\": \"APL-2609-003\",\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"Rejected\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"confirmed_count\": 0,\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"required_units\": 3,\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"city\": \"Riyadh\",\n        \"patient_name\": \"عبدالله\",\n        \"created_at\": \"2026-09-13T19:15:59+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit appeal\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/17\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/17/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"Create a new appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 16,\n        \"code\": \"APL-2609-002\",\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"Fulfilled\",\n          \"color\": \"#4B5563\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"confirmed_count\": 2,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"required_units\": 2,\n        \"hospital\": {\n          \"id\": 8,\n          \"name\": \"Central Blood Bank — Central Blood Bank Donation Center\"\n        },\n        \"city\": \"Riyadh\",\n        \"patient_name\": \"نورة\",\n        \"created_at\": \"2026-09-28T19:12:58+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit appeal\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/16\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/16/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"Create a new appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"confirmed_count\": 3,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"required_units\": 5,\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"city\": \"Jeddah\",\n        \"patient_name\": \"سلمى\",\n        \"created_at\": \"2026-10-13T19:32:58+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit appeal\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/15/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"Create a new appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 14,\n        \"code\": \"APL-2610-006\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"under_review\",\n          \"label\": \"Under review\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"confirmed_count\": 0,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"required_units\": 1,\n        \"hospital\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"city\": \"Riyadh\",\n        \"patient_name\": \"محمد\",\n        \"created_at\": \"2026-10-17T15:35:58+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit appeal\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/14\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/14/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"Create a new appeal\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 5,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 5\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — filtered (status)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals?status=active",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"confirmed_count\": 3,\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"required_units\": 5,\n        \"hospital\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"city\": \"جدة\",\n        \"patient_name\": \"سلمى\",\n        \"created_at\": \"2026-10-13T19:32:58+00:00\",\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل النداء\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"my-appeals/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق النداء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals/15/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"create_new\",\n            \"label\": \"إنشاء نداء جديد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"my-appeals\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 1,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals?status=nope",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الحالة غير صالح.\",\n  \"errors\": {\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "create-my-appeal",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"user_token\") }; pm.sendRequest({ url: base + \"my-appeals?status=under_review\", method: \"GET\", header: h }, (e, r) => { if (e || r.code !== 200) return; r.json().data.data.forEach((a) => pm.sendRequest({ url: base + \"my-appeals/\" + a.id + \"/close\", method: \"POST\", header: h })); });",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"created request\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"urgency\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"hospital\"); pm.expect(o).to.have.property(\"patient_name\"); pm.expect(o).to.have.property(\"requester_name\"); pm.expect(o).to.have.property(\"stages\"); pm.expect(o).to.have.property(\"notes_text\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"a donor request waits for the review (under_review)\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"under_review\"); pm.expect(d.source.value).to.eql(\"user\"); pm.expect(d.stages.map((s) => s.key)).to.eql([\"under_review\", \"active\", \"fulfilled\"]); });",
                          "{ const id = pm.response.json().data.id; if (id) { pm.collectionVariables.set(\"my_appeal_id\", id); pm.environment.set(\"my_appeal_id\", id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}my-appeals",
                      "host": [
                        "{{base_url}}my-appeals"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nإنشاء نداء من المستخدم (يذهب لمراجعة الإدارة).\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type (sheet) — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type (sheet) — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- U139 Select Hospital (sheet) — user app `773:1878`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1878&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1878&scaling=scale-down&content-scaling=fixed)\n- U139 Select Hospital (sheet) — user web `825:6826`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-6826&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-6826&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- U141 Select Relationship (sheet) — user app `773:2430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2430&scaling=scale-down&content-scaling=fixed)\n- U141 Select Relationship (sheet) — user web `825:7478`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7478&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7478&scaling=scale-down&content-scaling=fixed)\n- U142 Create Appeal / Review — user app `1005:113`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-113&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-113&scaling=scale-down&content-scaling=fixed)\n- U142 Create Appeal / Review — user web `2202:6322`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-6322&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-6322&scaling=scale-down&content-scaling=fixed)\n- U136 Create Appeal / Submitted — user app `773:1283`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1283&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1283&scaling=scale-down&content-scaling=fixed)\n- U136 Create Appeal / Submitted — user web `2202:6481`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-6481&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-6481&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n- Rate limit: `throttle:appeals` (5/hour)\n\n## Parameters & fields\n### Body (form-data)\n- `file_no` — optional · nullable|string|max:50 · رقم الملف الطبي · example: `MRN-55821`\n- `patient_name` — required · required|string|max:150 · اسم المريض · example: `محمد`\n- `blood_type` — optional · nullable|Rule::enum(BloodType::class) — فارغ = «لا أعرف» (C16) · الفصيلة المطلوبة · source: GET {{base_url}}lookups/blood-types · example: `A+`\n- `urgency` — required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني) · source: GET {{base_url}}lookups/appeal-urgencies · example: `urgent`\n- `required_units` — required · required|integer|min:1|max:50 · عدد الوحدات · example: `1`\n- `donation_type_id` — optional · nullable|exists:donation_types,id — فارغ = «غير محدد» (C16) · نوع التبرع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `branch_id` — required · required|exists:branches,id (active, whereNull deleted_at) · المستشفى · source: GET {{base_url}}lookups/branches?city_id=1 · example: `1`\n- `city_id` — required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n- `district_id` — optional · nullable|exists:districts,id (belongs to city) · الحي (web) · source: GET {{base_url}}cities/{id}/districts · example: `3`\n- `required_time_type` — required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times · example: `asap`\n- `required_at` — required_if:required_time_type,specific · nullable|required_if:required_time_type,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت محدد · example: `2026-10-20 10:00`\n- `medical_message` — required · required|string|max:500 · رسالة طبية (تظهر للمتبرعين) · example: `مريض بحاجة لنقل دم عاجل بعد عملية`\n- `case_description` — optional · nullable|string|max:1000 · وصف الحالة · example: `عملية في القلب`\n- `diagnosis` — optional · nullable|string|max:500 · التشخيص · example: `فقر دم حاد`\n- `requester_relation` — required · required|Rule::enum(AppealRelation::class) · صلتك بالمريض · source: GET {{base_url}}lookups/appeal-relations · example: `brother`\n- `requester_name` — required · required|string|max:150 · اسم صاحب النداء · example: `أحمد القحطاني`\n- `requester_country_code` — required · required|exists:countries,code · مفتاح الدولة · example: `966`\n- `requester_phone` — required · required|string — PhoneNormalizer|regex:/^5\\d{8}$/ · رقم التواصل · example: `0551234567`\n\n\n## Behaviour notes\n**Steps:**\n1. شاشة التفاصيل → «متابعة إلى المراجعة» (client validation) → شاشة المراجعة → «نشر النداء» = **هذا الطلب** (طلب واحد بكل الحقول).\n2. حد النداءات المفتوحة: (under_review + active) < `user_appeal_max_open` (3) وإلا 409.\n3. ينشئ `appeals` (`source=user`, `status=under_review`, `code` APL- عبر Observer, creator=User) + `appeal_status_logs`.\n4. `blood_type`/`donation_type_id` قد يكونان فارغين («لا أعرف»/«غير محدد» — C16)؛ **الأدمن يحددهما قبل الموافقة**.\n5. يرجع `MyAppealResource` + رسالة الإنشاء (U136: الرقم، الحالة قيد المراجعة، وقت الإنشاء).\n\n**Status / state transitions:** `AppealStatus`: — → `under_review`.\n\n**Multi-step flow:** U137 (client) → U142 مراجعة (client) → **POST هذا** → U136 نجاح → U144 متابعة (`GET my-appeals/{id}`).\n\n**Side effects (Laravel-first):**\n- Event `UserAppealSubmitted` → admins notified (database bell, `AdminNotificationPresenter`).\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_user_appeal_submitted` | الأدمن (جرس اللوحة) | نداء مستخدم بانتظار المراجعة | :code — :blood_type — :branch | appeal_id | admin appeals.show |\n\n> Postman: the pre-request withdraws (`my-appeals/{id}/close`) the requests still under review, because a donor may hold only `user_appeal_max_open` (3) open ones (409 `appeal.max_open`) - so the request can run again; the route is also throttled (5/hour): a sixth run inside the hour answers 429. `required_at` is sent as a date variable (`{{d5}} 10:00`) so it is always in the future.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.created_user` → ar «تم إنشاء النداء بنجاح — سيتم مراجعته من الإدارة قبل نشره» / en \"Appeal created — pending admin review\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (patient_name, urgency, required_units, branch_id, city_id, required_time_type, medical_message, requester_*) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | 3 نداءات مفتوحة | `appeal.max_open` | لا يمكنك إنشاء أكثر من :max نداءات قائمة | You can't have more than :max open appeals |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n| 429 | تجاوز 5 طلبات نداء/ساعة (`throttle:appeals`) | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "file_no",
                          "value": "MRN-55821",
                          "type": "text",
                          "description": "شرطي · nullable|required_without:patient_name|string|max:50 · رقم الملف الطبي (أو اسم المريض — واحد على الأقل)"
                        },
                        {
                          "key": "patient_name",
                          "value": "محمد",
                          "type": "text",
                          "description": "شرطي · nullable|required_without:file_no|string|max:150 · اسم المريض (أو رقم الملف — واحد على الأقل)"
                        },
                        {
                          "key": "blood_type",
                          "value": "A+",
                          "type": "text",
                          "description": "optional · nullable|Rule::enum(BloodType::class) — فارغ = «لا أعرف» (C16) · الفصيلة المطلوبة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "urgency",
                          "value": "urgent",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني) · source: GET {{base_url}}lookups/appeal-urgencies"
                        },
                        {
                          "key": "required_units",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:50 · عدد الوحدات"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|exists:donation_types,id — فارغ = «غير محدد» (C16) · نوع التبرع · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:branches,id (active, whereNull deleted_at) · المستشفى · source: GET {{base_url}}lookups/branches?city_id=1"
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities"
                        },
                        {
                          "key": "district_id",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|exists:districts,id (belongs to city) · الحي (web) · source: GET {{base_url}}cities/{id}/districts"
                        },
                        {
                          "key": "required_time_type",
                          "value": "asap",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times"
                        },
                        {
                          "key": "required_at",
                          "value": "{{d5}} 10:00",
                          "type": "text",
                          "description": "required_if:required_time_type,specific · nullable|required_if:required_time_type,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت محدد"
                        },
                        {
                          "key": "medical_message",
                          "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                          "type": "text",
                          "description": "required · required|string|max:500 · رسالة طبية (تظهر للمتبرعين)"
                        },
                        {
                          "key": "case_description",
                          "value": "عملية في القلب",
                          "type": "text",
                          "description": "optional · nullable|string|max:1000 · وصف الحالة"
                        },
                        {
                          "key": "diagnosis",
                          "value": "فقر دم حاد",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · التشخيص"
                        },
                        {
                          "key": "requester_relation",
                          "value": "brother",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealRelation::class) · صلتك بالمريض · source: GET {{base_url}}lookups/appeal-relations"
                        },
                        {
                          "key": "requester_name",
                          "value": "أحمد القحطاني",
                          "type": "text",
                          "description": "required · required|string|max:150 · اسم صاحب النداء"
                        },
                        {
                          "key": "requester_country_code",
                          "value": "966",
                          "type": "text",
                          "description": "required · required|exists:countries,code · مفتاح الدولة"
                        },
                        {
                          "key": "requester_phone",
                          "value": "0551234567",
                          "type": "text",
                          "description": "required · required|string — PhoneNormalizer|regex:/^5\\d{8}$/ · رقم التواصل"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء النداء بنجاح — سيتم مراجعته من الإدارة قبل نشره\",\n  \"data\": {\n    \"id\": 65,\n    \"code\": \"APL-2610-020\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"confirmed_count\": 0,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"required_units\": 1,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 من 1\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"district\": null,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"file_no\": \"MRN-55821\",\n    \"patient_name\": \"محمد\",\n    \"medical_message\": \"مريض بحاجة لنقل دم عاجل بعد عملية\",\n    \"case_description\": \"عملية في القلب\",\n    \"diagnosis\": null,\n    \"requester_relation\": {\n      \"value\": \"brother\",\n      \"label\": \"الأخ\"\n    },\n    \"requester_name\": \"أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-18T20:07:25+00:00\",\n    \"status_reason\": null,\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"بانتظار المراجعة\",\n        \"state\": \"current\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"نشط\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"استيفاء\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"سيتم مراجعة النداء من الإدارة قبل نشره\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل النداء\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/65\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق النداء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/65/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"إنشاء نداء جديد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal created — pending admin review\",\n  \"data\": {\n    \"id\": 66,\n    \"code\": \"APL-2610-020\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"Under review\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"confirmed_count\": 0,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"required_units\": 1,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"User\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 of 1\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"Riyadh\"\n    },\n    \"district\": null,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"file_no\": \"MRN-55821\",\n    \"patient_name\": \"محمد\",\n    \"medical_message\": \"مريض بحاجة لنقل دم عاجل بعد عملية\",\n    \"case_description\": \"عملية في القلب\",\n    \"diagnosis\": null,\n    \"requester_relation\": {\n      \"value\": \"brother\",\n      \"label\": \"Brother\"\n    },\n    \"requester_name\": \"أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-18T20:07:25+00:00\",\n    \"status_reason\": null,\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"Awaiting review\",\n        \"state\": \"current\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"Active\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"Fulfilled\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"The appeal will be reviewed by the administration before it is published\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit appeal\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/66\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/66/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"Create a new appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — blood type and component unknown («لا أعرف»)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء النداء بنجاح — سيتم مراجعته من الإدارة قبل نشره\",\n  \"data\": {\n    \"id\": 67,\n    \"code\": \"APL-2610-020\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": null,\n    \"confirmed_count\": 0,\n    \"donation_type\": null,\n    \"required_units\": 1,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 من 1\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"district\": null,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"file_no\": \"MRN-55821\",\n    \"patient_name\": \"محمد\",\n    \"medical_message\": \"مريض بحاجة لنقل دم عاجل بعد عملية\",\n    \"case_description\": \"عملية في القلب\",\n    \"diagnosis\": null,\n    \"requester_relation\": {\n      \"value\": \"brother\",\n      \"label\": \"الأخ\"\n    },\n    \"requester_name\": \"أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-18T20:07:25+00:00\",\n    \"status_reason\": null,\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"بانتظار المراجعة\",\n        \"state\": \"current\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"نشط\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"استيفاء\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"سيتم مراجعة النداء من الإدارة قبل نشره\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل النداء\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/67\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق النداء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/67/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"إنشاء نداء جديد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل اسم المريض مطلوب. (and 10 more errors)\",\n  \"errors\": {\n    \"patient_name\": [\n      \"الحقل اسم المريض مطلوب.\"\n    ],\n    \"urgency\": [\n      \"الحقل نوع الحالة مطلوب.\"\n    ],\n    \"required_units\": [\n      \"الحقل عدد الوحدات مطلوب.\"\n    ],\n    \"branch_id\": [\n      \"الحقل الفرع مطلوب.\"\n    ],\n    \"city_id\": [\n      \"الحقل المدينة مطلوب.\"\n    ],\n    \"required_time_type\": [\n      \"الحقل الموعد المطلوب مطلوب.\"\n    ],\n    \"medical_message\": [\n      \"الحقل الرسالة الطبية مطلوب.\"\n    ],\n    \"requester_relation\": [\n      \"الحقل صلتك بالمريض مطلوب.\"\n    ],\n    \"requester_name\": [\n      \"الحقل اسم صاحب النداء مطلوب.\"\n    ],\n    \"requester_country_code\": [\n      \"الحقل مفتاح الدولة مطلوب.\"\n    ],\n    \"requester_phone\": [\n      \"الحقل رقم التواصل مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — 3 نداءات مفتوحة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكنك إنشاء أكثر من 3 نداءات قائمة\",\n  \"key\": \"max_open\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    },
                    {
                      "name": "❌ 429 — تجاوز 5 طلبات نداء/ساعة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "محمد",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 3600\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "my-appeal-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"follow-up\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"confirmed_count\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"responses_text\"); pm.expect(o).to.have.property(\"patient_name\"); pm.expect(o).to.have.property(\"requester_name\"); pm.expect(o).to.have.property(\"stages\"); pm.expect(o).to.have.property(\"notes_text\"); pm.expect(o).to.have.property(\"status_reason\"); pm.expect(o).to.have.property(\"targeted_count\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"three stages with a current one\", () => { const s = pm.response.json().data.stages; pm.expect(s).to.have.length(3); s.forEach((x) => pm.expect([\"done\", \"current\", \"pending\"]).to.include(x.state)); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}my-appeals/{id}",
                      "host": [
                        "{{base_url}}my-appeals"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{my_appeal_id}}",
                          "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nمتابعة نداء المستخدم بكل الحالات.\n\n## Screens\n- U144 Appeal Follow-Up / Under Review — user app `1005:6005`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6005&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6005&scaling=scale-down&content-scaling=fixed)\n- U144 Appeal Follow-Up / Under Review — user web `2202:8053`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8053&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8053&scaling=scale-down&content-scaling=fixed)\n- U145 Follow-Up / Active — user app `1005:6840`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6840&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6840&scaling=scale-down&content-scaling=fixed)\n- U146 Follow-Up / Fulfilled — user app `1005:7448`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-7448&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-7448&scaling=scale-down&content-scaling=fixed)\n- U147 Under Review v02 — user app `1005:7898`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-7898&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-7898&scaling=scale-down&content-scaling=fixed)\n- W3 Follow-Up — مغلق — user web `2202:8287`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8287&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8287&scaling=scale-down&content-scaling=fixed)\n- W4 Follow-Up v03 — مغلق — user web `2202:8495`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8495&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8495&scaling=scale-down&content-scaling=fixed)\n- G-04 تعديل + سبب الرفض + إنشاء جديد (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals · example: `3`\n\n\n## Behaviour notes\n**Steps:**\n1. `MyAppealResource` للمالك: كل الحقول (بما فيها المريض وصاحب النداء)، `stages` (بانتظار المراجعة → نشط → استيفاء)، `confirmed_count/required_units` («المحتسب/المستهدف»)، `targeted_count`، `notes_text` حسب الحالة («النداء منشور للمتبرعين» / «تم استيفاء الاحتياج — شكراً للمتبرعين»)، `status_reason` (الرفض/الإغلاق).\n2. `action_buttons`: `edit` (under_review) · `close` (under_review/active/paused/fulfilled) · `create_new` (rejected/closed).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | نداء لغير المالك | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success: under review (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 14,\n    \"code\": \"APL-2610-006\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"confirmed_count\": 0,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"required_units\": 1,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 من 1\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"district\": {\n      \"id\": 1,\n      \"name\": \"العليا\"\n    },\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"file_no\": null,\n    \"patient_name\": \"محمد\",\n    \"medical_message\": \"أخي يحتاج وحدة دم قبل عملية القلب المقررة غداً\",\n    \"case_description\": \"عملية قسطرة قلبية\",\n    \"diagnosis\": \"انسداد في الشريان التاجي\",\n    \"requester_relation\": {\n      \"value\": \"brother\",\n      \"label\": \"الأخ\"\n    },\n    \"requester_name\": \"محمد أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-17T15:35:58+00:00\",\n    \"status_reason\": null,\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"بانتظار المراجعة\",\n        \"state\": \"current\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"نشط\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"استيفاء\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"سيتم مراجعة النداء من الإدارة قبل نشره\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل النداء\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/14\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق النداء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/14/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"إنشاء نداء جديد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — active (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 15,\n    \"code\": \"APL-2610-007\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"confirmed_count\": 3,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"required_units\": 5,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"User\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"3 of 5\",\n    \"hospital\": {\n      \"id\": 2,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n    },\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"Jeddah\"\n    },\n    \"district\": {\n      \"id\": 49,\n      \"name\": \"Al Nuzha\"\n    },\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"file_no\": null,\n    \"patient_name\": \"سلمى\",\n    \"medical_message\": \"صديقتي تحتاج 5 وحدات دم بعد حادث سير\",\n    \"case_description\": \"نزيف بعد حادث\",\n    \"diagnosis\": \"كسور متعددة\",\n    \"requester_relation\": {\n      \"value\": \"friend\",\n      \"label\": \"Friend\"\n    },\n    \"requester_name\": \"محمد أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-13T19:32:58+00:00\",\n    \"status_reason\": null,\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"Awaiting review\",\n        \"state\": \"done\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"Active\",\n        \"state\": \"current\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"Fulfilled\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"The appeal is published to donors\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit appeal\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/15\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/15/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"Create a new appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — rejected (status_reason + create_new)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 17,\n    \"code\": \"APL-2609-003\",\n    \"urgency\": {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"status\": {\n      \"value\": \"rejected\",\n      \"label\": \"مرفوض\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"blood_type\": {\n      \"value\": \"B+\",\n      \"label\": \"B+\"\n    },\n    \"confirmed_count\": 0,\n    \"donation_type\": {\n      \"id\": 2,\n      \"name\": \"صفائح دموية\"\n    },\n    \"required_units\": 3,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 من 3\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"district\": {\n      \"id\": 1,\n      \"name\": \"العليا\"\n    },\n    \"required_time\": {\n      \"value\": \"today\",\n      \"label\": \"اليوم\"\n    },\n    \"required_at\": null,\n    \"file_no\": null,\n    \"patient_name\": \"عبدالله\",\n    \"medical_message\": \"أحتاج صفائح دموية بشكل عاجل\",\n    \"case_description\": null,\n    \"diagnosis\": null,\n    \"requester_relation\": {\n      \"value\": \"self\",\n      \"label\": \"أنا المريض\"\n    },\n    \"requester_name\": \"محمد أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-09-13T19:15:59+00:00\",\n    \"status_reason\": \"بيانات الحالة غير مكتملة — يرجى إنشاء نداء جديد بتفاصيل أوضح\",\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"بانتظار المراجعة\",\n        \"state\": \"done\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"نشط\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"استيفاء\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"تم رفض النداء — يمكنك إنشاء نداء جديد\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل النداء\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/17\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق النداء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/17/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"إنشاء نداء جديد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — نداء لغير المالك",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "update-my-appeal",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"edited request\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"still waiting for the review\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"under_review\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}my-appeals/{id}",
                      "host": [
                        "{{base_url}}my-appeals"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{my_appeal_id}}",
                          "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعديل نداء قيد المراجعة.\n\n## Screens\n- U144 Follow-Up / Under Review — «تعديل» (gap G-04) — user app `1005:6005`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6005&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6005&scaling=scale-down&content-scaling=fixed)\n- U144 Follow-Up / Under Review — «تعديل» (gap G-04) — user web `2202:8053`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8053&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8053&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal form (prefilled) — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal form (prefilled) — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals · example: `3`\n\n### Body (form-data)\n- `_method` — required · PUT · method spoofing for form-data · example: `PUT`\n- `file_no` — optional · nullable|string|max:50 · رقم الملف الطبي · example: `MRN-55821`\n- `patient_name` — required · required|string|max:150 · اسم المريض · example: `محمد`\n- `blood_type` — optional · nullable|Rule::enum(BloodType::class) — فارغ = «لا أعرف» (C16) · الفصيلة المطلوبة · source: GET {{base_url}}lookups/blood-types · example: `A+`\n- `urgency` — required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني) · source: GET {{base_url}}lookups/appeal-urgencies · example: `urgent`\n- `required_units` — required · required|integer|min:1|max:50 · عدد الوحدات · example: `1`\n- `donation_type_id` — optional · nullable|exists:donation_types,id — فارغ = «غير محدد» (C16) · نوع التبرع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `branch_id` — required · required|exists:branches,id (active, whereNull deleted_at) · المستشفى · source: GET {{base_url}}lookups/branches?city_id=1 · example: `1`\n- `city_id` — required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n- `district_id` — optional · nullable|exists:districts,id (belongs to city) · الحي (web) · source: GET {{base_url}}cities/{id}/districts · example: `3`\n- `required_time_type` — required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times · example: `asap`\n- `required_at` — required_if:required_time_type,specific · nullable|required_if:required_time_type,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت محدد · example: `2026-10-20 10:00`\n- `medical_message` — required · required|string|max:500 · رسالة طبية (تظهر للمتبرعين) · example: `مريض بحاجة لنقل دم عاجل بعد عملية`\n- `case_description` — optional · nullable|string|max:1000 · وصف الحالة · example: `عملية في القلب`\n- `diagnosis` — optional · nullable|string|max:500 · التشخيص · example: `فقر دم حاد`\n- `requester_relation` — required · required|Rule::enum(AppealRelation::class) · صلتك بالمريض · source: GET {{base_url}}lookups/appeal-relations · example: `brother`\n- `requester_name` — required · required|string|max:150 · اسم صاحب النداء · example: `أحمد القحطاني`\n- `requester_country_code` — required · required|exists:countries,code · مفتاح الدولة · example: `966`\n- `requester_phone` — required · required|string — PhoneNormalizer|regex:/^5\\d{8}$/ · رقم التواصل · example: `0551234567`\n\n\n## Behaviour notes\n**Steps:**\n1. مسموح فقط في `under_review` وإلا 409 `appeal.not_editable`.\n2. نفس قواعد الإنشاء؛ يحدّث من `validated()`؛ سجل حالة (under_review → under_review) + إشعار الأدمن بالتعديل.\n3. Postman/Apidog: أرسل `POST` مع `_method=PUT` في form-data (multipart) أو `PUT` x-www-form-urlencoded.\n\n**Status / state transitions:** `under_review` → `under_review` (edit).\n\n**Side effects (Laravel-first):**\n- none.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_user_appeal_submitted` | الأدمن | نداء مستخدم بانتظار المراجعة | :code — :blood_type — :branch (معدّل) | appeal_id | admin appeals.show |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.updated` → ar «تم تعديل النداء» / en \"Appeal updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (same as store) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | الحالة ليست under_review | `appeal.not_editable` | لا يمكن تعديل النداء بعد مراجعته | The appeal can't be edited after review |\n| 404 | نداء لغير المالك | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n\n> الـ route هو `PUT {{base_url}}my-appeals/{id}`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "file_no",
                          "value": "MRN-55821",
                          "type": "text",
                          "description": "شرطي · nullable|required_without:patient_name|string|max:50 · رقم الملف الطبي (أو اسم المريض — واحد على الأقل)"
                        },
                        {
                          "key": "patient_name",
                          "value": "سارة",
                          "type": "text",
                          "description": "شرطي · nullable|required_without:file_no|string|max:150 · اسم المريض (أو رقم الملف — واحد على الأقل)"
                        },
                        {
                          "key": "blood_type",
                          "value": "A+",
                          "type": "text",
                          "description": "optional · nullable|Rule::enum(BloodType::class) — فارغ = «لا أعرف» (C16) · الفصيلة المطلوبة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "urgency",
                          "value": "urgent",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني) · source: GET {{base_url}}lookups/appeal-urgencies"
                        },
                        {
                          "key": "required_units",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:50 · عدد الوحدات"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|exists:donation_types,id — فارغ = «غير محدد» (C16) · نوع التبرع · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:branches,id (active, whereNull deleted_at) · المستشفى · source: GET {{base_url}}lookups/branches?city_id=1"
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities"
                        },
                        {
                          "key": "district_id",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|exists:districts,id (belongs to city) · الحي (web) · source: GET {{base_url}}cities/{id}/districts"
                        },
                        {
                          "key": "required_time_type",
                          "value": "asap",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times"
                        },
                        {
                          "key": "required_at",
                          "value": "{{d5}} 10:00",
                          "type": "text",
                          "description": "required_if:required_time_type,specific · nullable|required_if:required_time_type,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت محدد"
                        },
                        {
                          "key": "medical_message",
                          "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                          "type": "text",
                          "description": "required · required|string|max:500 · رسالة طبية (تظهر للمتبرعين)"
                        },
                        {
                          "key": "case_description",
                          "value": "عملية في القلب",
                          "type": "text",
                          "description": "optional · nullable|string|max:1000 · وصف الحالة"
                        },
                        {
                          "key": "diagnosis",
                          "value": "فقر دم حاد",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · التشخيص"
                        },
                        {
                          "key": "requester_relation",
                          "value": "brother",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealRelation::class) · صلتك بالمريض · source: GET {{base_url}}lookups/appeal-relations"
                        },
                        {
                          "key": "requester_name",
                          "value": "أحمد القحطاني",
                          "type": "text",
                          "description": "required · required|string|max:150 · اسم صاحب النداء"
                        },
                        {
                          "key": "requester_country_code",
                          "value": "966",
                          "type": "text",
                          "description": "required · required|exists:countries,code · مفتاح الدولة"
                        },
                        {
                          "key": "requester_phone",
                          "value": "0551234567",
                          "type": "text",
                          "description": "required · required|string — PhoneNormalizer|regex:/^5\\d{8}$/ · رقم التواصل"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "سارة",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تعديل النداء\",\n  \"data\": {\n    \"id\": 14,\n    \"code\": \"APL-2610-006\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"confirmed_count\": 0,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"required_units\": 2,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 من 2\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"district\": {\n      \"id\": 1,\n      \"name\": \"العليا\"\n    },\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"file_no\": \"MRN-55821\",\n    \"patient_name\": \"سارة\",\n    \"medical_message\": \"مريض بحاجة لنقل دم عاجل بعد عملية\",\n    \"case_description\": \"عملية في القلب\",\n    \"diagnosis\": \"انسداد في الشريان التاجي\",\n    \"requester_relation\": {\n      \"value\": \"brother\",\n      \"label\": \"الأخ\"\n    },\n    \"requester_name\": \"أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-17T15:35:58+00:00\",\n    \"status_reason\": null,\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"بانتظار المراجعة\",\n        \"state\": \"current\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"نشط\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"استيفاء\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"سيتم مراجعة النداء من الإدارة قبل نشره\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل النداء\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/14\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق النداء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/14/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"إنشاء نداء جديد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "سارة",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal updated\",\n  \"data\": {\n    \"id\": 14,\n    \"code\": \"APL-2610-006\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"Under review\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"confirmed_count\": 0,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"required_units\": 2,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"User\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 of 2\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"Riyadh\"\n    },\n    \"district\": {\n      \"id\": 1,\n      \"name\": \"Olaya\"\n    },\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"file_no\": \"MRN-55821\",\n    \"patient_name\": \"سارة\",\n    \"medical_message\": \"مريض بحاجة لنقل دم عاجل بعد عملية\",\n    \"case_description\": \"عملية في القلب\",\n    \"diagnosis\": \"انسداد في الشريان التاجي\",\n    \"requester_relation\": {\n      \"value\": \"brother\",\n      \"label\": \"Brother\"\n    },\n    \"requester_name\": \"أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-17T15:35:58+00:00\",\n    \"status_reason\": null,\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"Awaiting review\",\n        \"state\": \"current\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"Active\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"Fulfilled\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"The appeal will be reviewed by the administration before it is published\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit appeal\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/14\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/14/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"Create a new appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (same as store)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل اسم المريض مطلوب. (and 10 more errors)\",\n  \"errors\": {\n    \"patient_name\": [\n      \"الحقل اسم المريض مطلوب.\"\n    ],\n    \"urgency\": [\n      \"الحقل نوع الحالة مطلوب.\"\n    ],\n    \"required_units\": [\n      \"الحقل عدد الوحدات مطلوب.\"\n    ],\n    \"branch_id\": [\n      \"الحقل الفرع مطلوب.\"\n    ],\n    \"city_id\": [\n      \"الحقل المدينة مطلوب.\"\n    ],\n    \"required_time_type\": [\n      \"الحقل الموعد المطلوب مطلوب.\"\n    ],\n    \"medical_message\": [\n      \"الحقل الرسالة الطبية مطلوب.\"\n    ],\n    \"requester_relation\": [\n      \"الحقل صلتك بالمريض مطلوب.\"\n    ],\n    \"requester_name\": [\n      \"الحقل اسم صاحب النداء مطلوب.\"\n    ],\n    \"requester_country_code\": [\n      \"الحقل مفتاح الدولة مطلوب.\"\n    ],\n    \"requester_phone\": [\n      \"الحقل رقم التواصل مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — الحالة ليست under_review",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "سارة",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تعديل النداء بعد مراجعته\",\n  \"key\": \"not_editable\"\n}"
                    },
                    {
                      "name": "❌ 404 — نداء لغير المالك",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "سارة",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "سارة",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "سارة",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "patient_name",
                              "value": "سارة",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-55821",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "asap",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "مريض بحاجة لنقل دم عاجل بعد عملية",
                              "type": "text"
                            },
                            {
                              "key": "case_description",
                              "value": "عملية في القلب",
                              "type": "text"
                            },
                            {
                              "key": "requester_relation",
                              "value": "brother",
                              "type": "text"
                            },
                            {
                              "key": "requester_name",
                              "value": "أحمد القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "requester_country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "requester_phone",
                              "value": "0551234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "close-my-appeal",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"closed appeal\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"status_reason\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"closed by its owner\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"closed\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}my-appeals/{id}/close",
                      "host": [
                        "{{base_url}}my-appeals"
                      ],
                      "path": [
                        "{id}",
                        "close"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{my_appeal_id}}",
                          "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nإغلاق المستخدم لنداءه.\n\n## Screens\n- U148 Close Appeal / Confirmation «إغلاق النداء؟» — user app `1005:6819`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6819&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6819&scaling=scale-down&content-scaling=fixed)\n- U148 Close Appeal / Confirmation «إغلاق النداء؟» — user web `2202:8269`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8269&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8269&scaling=scale-down&content-scaling=fixed)\n- U144 Follow-Up — user app `1005:6005`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6005&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-6005&scaling=scale-down&content-scaling=fixed)\n- U144 Follow-Up — user web `2202:8053`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8053&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2202-8053&scaling=scale-down&content-scaling=fixed)\n- U143 My Appeals — إغلاق — user app `1005:5705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-5705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-5705&scaling=scale-down&content-scaling=fixed)\n- U143 My Appeals — إغلاق — user web `1005:8341`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-8341&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1005-8341&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals · example: `3`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppealStatusService::transition($appeal, CLOSED, actor: user)` — مسموح من under_review (سحب) / active / paused / fulfilled.\n2. يضبط `closed_at`, `status_reason` = «أغلقه صاحب النداء» + سجل.\n3. الحجوزات المرتبطة القائمة **تبقى صالحة** (لا تُلغى).\n\n**Status / state transitions:** `under_review|active|paused|fulfilled` → `closed`.\n\n**Side effects (Laravel-first):**\n- Event `AppealClosed` → `provider_appeal_closed` (queued) when it was published.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `provider_appeal_closed` | موظفو appeals بالفرع (لو كان منشوراً) | إغلاق نداء | تم إغلاق النداء :code — :reason | appeal_id | P6 |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.closed` → ar «تم إغلاق النداء» / en \"Appeal closed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | مغلق/مرفوض بالفعل | `appeal.invalid_transition_own` | لا يمكن تنفيذ هذا الإجراء على النداء في حالته الحالية | Not allowed in the current status |\n| 404 | نداء لغير المالك | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}/close",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إغلاق النداء\",\n  \"data\": {\n    \"id\": 15,\n    \"code\": \"APL-2610-007\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"closed\",\n      \"label\": \"مغلق\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"confirmed_count\": 3,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"required_units\": 5,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"3 من 5\",\n    \"hospital\": {\n      \"id\": 2,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n    },\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    \"district\": {\n      \"id\": 49,\n      \"name\": \"النزهة\"\n    },\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"file_no\": null,\n    \"patient_name\": \"سلمى\",\n    \"medical_message\": \"صديقتي تحتاج 5 وحدات دم بعد حادث سير\",\n    \"case_description\": \"نزيف بعد حادث\",\n    \"diagnosis\": \"كسور متعددة\",\n    \"requester_relation\": {\n      \"value\": \"friend\",\n      \"label\": \"صديق\"\n    },\n    \"requester_name\": \"محمد أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-13T19:32:58+00:00\",\n    \"status_reason\": \"أغلقه صاحب النداء\",\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"بانتظار المراجعة\",\n        \"state\": \"done\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"نشط\",\n        \"state\": \"done\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"استيفاء\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"تم إغلاق النداء\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل النداء\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/15\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق النداء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/15/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"إنشاء نداء جديد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}/close",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal closed\",\n  \"data\": {\n    \"id\": 14,\n    \"code\": \"APL-2610-006\",\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"status\": {\n      \"value\": \"closed\",\n      \"label\": \"Closed\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"confirmed_count\": 0,\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"required_units\": 1,\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"User\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses_text\": \"0 of 1\",\n    \"hospital\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"Riyadh\"\n    },\n    \"district\": {\n      \"id\": 1,\n      \"name\": \"Olaya\"\n    },\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"file_no\": null,\n    \"patient_name\": \"محمد\",\n    \"medical_message\": \"أخي يحتاج وحدة دم قبل عملية القلب المقررة غداً\",\n    \"case_description\": \"عملية قسطرة قلبية\",\n    \"diagnosis\": \"انسداد في الشريان التاجي\",\n    \"requester_relation\": {\n      \"value\": \"brother\",\n      \"label\": \"Brother\"\n    },\n    \"requester_name\": \"محمد أحمد القحطاني\",\n    \"requester_phone\": \"0551234567\",\n    \"created_at\": \"2026-10-17T15:35:58+00:00\",\n    \"status_reason\": \"Closed by the appeal owner\",\n    \"stages\": [\n      {\n        \"key\": \"under_review\",\n        \"label\": \"Awaiting review\",\n        \"state\": \"done\"\n      },\n      {\n        \"key\": \"active\",\n        \"label\": \"Active\",\n        \"state\": \"pending\"\n      },\n      {\n        \"key\": \"fulfilled\",\n        \"label\": \"Fulfilled\",\n        \"state\": \"pending\"\n      }\n    ],\n    \"notes_text\": \"The appeal is closed\",\n    \"targeted_count\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit appeal\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"my-appeals/14\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals/14/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"create_new\",\n        \"label\": \"Create a new appeal\",\n        \"method\": \"POST\",\n        \"endpoint\": \"my-appeals\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — مغلق/مرفوض بالفعل",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}/close",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء على النداء في حالته الحالية\",\n  \"key\": \"invalid_transition_own\"\n}"
                    },
                    {
                      "name": "❌ 404 — نداء لغير المالك",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}/close",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}/close",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}/close",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"consent\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}my-appeals/{id}/close",
                          "host": [
                            "{{base_url}}my-appeals"
                          ],
                          "path": [
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{my_appeal_id}}",
                              "description": "required · appeal owned by user · النداء · source: GET {{base_url}}my-appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `my-appeals` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"district\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/branches",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "فيصل",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (المستشفى/الفرع) — الفروع النشطة (المستشفيات) — مصدر `branch_id` في فورم نداء المستخدم.\n\n## Screens\n- U139 Select Hospital (sheet) — user app `773:1878`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1878&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1878&scaling=scale-down&content-scaling=fixed)\n- U139 Select Hospital (sheet) — user web `825:6826`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-6826&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-6826&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `city_id` — optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities · example: `1`\n- `donation_type_id` — optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث بالاسم · example: `فيصل`\n\n\n## Behaviour notes\n**Steps:**\n1. `Branch::active()` + جهته نشطة (`whereHas organization is_active`).\n2. فلتر اختياري `city_id`, `donation_type_id` (whereHas pivot), `search` على الاسم المترجم.\n3. يرجع `BranchLookupResource` خفيف: id, code, name (اسم الجهة — الفرع), city, district.\n4. غير مقسّم لصفحات (≤ مئات) — مرتب بالاسم.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (city_id, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all branches",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/branches",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 8,\n      \"code\": \"BR-008\",\n      \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 47,\n        \"name\": \"العكيشية\"\n      }\n    },\n    {\n      \"id\": 9,\n      \"code\": \"BR-009\",\n      \"name\": \"جامعة الملك سعود — مركز التبرع بجامعة الملك سعود\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 38,\n        \"name\": \"الدرعية\"\n      }\n    },\n    {\n      \"id\": 5,\n      \"code\": \"BR-005\",\n      \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 2,\n        \"name\": \"السليمانية\"\n      }\n    },\n    {\n      \"id\": 6,\n      \"code\": \"BR-006\",\n      \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 38,\n        \"name\": \"الدرعية\"\n      }\n    },\n    {\n      \"id\": 7,\n      \"code\": \"BR-007\",\n      \"name\": \"مستشفى الملك فهد التخصصي — مركز التبرع بالدم\",\n      \"city\": {\n        \"id\": 2,\n        \"name\": \"جدة\"\n      },\n      \"district\": {\n        \"id\": 50,\n        \"name\": \"العسافية\"\n      }\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 1,\n        \"name\": \"العليا\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"city\": {\n        \"id\": 3,\n        \"name\": \"الدمام\"\n      },\n      \"district\": {\n        \"id\": 51,\n        \"name\": \"الشاطئ\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"city\": {\n        \"id\": 2,\n        \"name\": \"جدة\"\n      },\n      \"district\": {\n        \"id\": 12,\n        \"name\": \"الروضة\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — Riyadh branches offering platelets (filters)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/branches?city_id=1&donation_type_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 8,\n      \"code\": \"BR-008\",\n      \"name\": \"بنك الدم المركزي — مركز التبرع ببنك الدم المركزي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 47,\n        \"name\": \"العكيشية\"\n      }\n    },\n    {\n      \"id\": 5,\n      \"code\": \"BR-005\",\n      \"name\": \"مدينة الملك فهد الطبية — المبنى الرئيسي\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 2,\n        \"name\": \"السليمانية\"\n      }\n    },\n    {\n      \"id\": 6,\n      \"code\": \"BR-006\",\n      \"name\": \"مستشفى الملك خالد الجامعي — العيادات الخارجية\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 38,\n        \"name\": \"الدرعية\"\n      }\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"city\": {\n        \"id\": 1,\n        \"name\": \"الرياض\"\n      },\n      \"district\": {\n        \"id\": 1,\n        \"name\": \"العليا\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown city_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/branches?city_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "city_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:cities,id · فلتر المدينة (sheet المدينة U140) · source: GET {{base_url}}cities",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:donation_types,id (whereNull deleted_at) · الفروع التي تقدّم النوع · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                },
                                {
                                  "key": "search",
                                  "value": "فيصل",
                                  "description": "optional · nullable|string|max:100 · بحث بالاسم",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد المدينة غير صالح.\",\n  \"errors\": {\n    \"city_id\": [\n      \"حقل المحدد المدينة غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities/{id}/districts",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities/{id}/districts",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": [
                            "{id}",
                            "districts"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `district_id` (الحي — يتبع مدينة الفرع) — أحياء مدينة — مصدر `district_id` في النداء (web) والفرع.\n\n## Screens\n- U137 Create Appeal — الحي (web) — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — district — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع أحياء المدينة النشطة (base `districts` + translations) مرتبة بالاسم.\n2. المدينة غير موجودة → 404.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | مدينة غير موجودة | `messages.not_found` | العنصر غير موجود | Not found |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — districts of Riyadh",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities/{id}/districts",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": [
                                "{id}",
                                "districts"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 3,\n      \"name\": \"الحي الدبلوماسي\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"الروضة\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"السليمانية\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"العكيشية\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"العليا\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"المربع\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"المروج\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"المروج II\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الملاذ\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الورود\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 404 — unknown city",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities/{id}/districts",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": [
                                "{id}",
                                "districts"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/appeal-urgencies",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); pm.expect(o).to.have.property(\"hint\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-urgencies",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-urgencies"
                          ]
                        },
                        "description": "## Purpose\nمصدر `urgency` (الاستعجال: حرج / عاجل / روتيني) — قائمة درجات استعجال النداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P19 Create Appeal / Enter Details — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n- P10 Appeals filter — urgency — provider (web) `245:6635`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealUrgency` بالترتيب المعرّف في الـ enum عبر `AppealUrgency::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- ثلاث قيم فقط (C5): حرج/عاجل/روتيني — أي «عالي/متوسط/منخفض» في التصميم تُستبدل.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/appeal-urgencies",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "appeal-urgencies"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"hint\": \"إنقاذ حياة\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"hint\": \"خلال ساعات\"\n    },\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\",\n      \"hint\": \"حاجة مستقرة\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/appeal-relations",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-relations",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-relations"
                          ]
                        },
                        "description": "## Purpose\nمصدر `requester_relation` (صلة صاحب النداء بالمريض) — قائمة صلة صاحب النداء بالمريض — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U141 Select Relationship (sheet) — user app `773:2430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2430&scaling=scale-down&content-scaling=fixed)\n- U141 Select Relationship (sheet) — user web `825:7478`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7478&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7478&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealRelation` بالترتيب المعرّف في الـ enum عبر `AppealRelation::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/appeal-relations",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "appeal-relations"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"self\",\n      \"label\": \"أنا المريض\"\n    },\n    {\n      \"value\": \"father\",\n      \"label\": \"الأب\"\n    },\n    {\n      \"value\": \"mother\",\n      \"label\": \"الأم\"\n    },\n    {\n      \"value\": \"brother\",\n      \"label\": \"الأخ\"\n    },\n    {\n      \"value\": \"sister\",\n      \"label\": \"الأخت\"\n    },\n    {\n      \"value\": \"husband\",\n      \"label\": \"الزوج\"\n    },\n    {\n      \"value\": \"wife\",\n      \"label\": \"الزوجة\"\n    },\n    {\n      \"value\": \"child\",\n      \"label\": \"الابن/الابنة\"\n    },\n    {\n      \"value\": \"relative\",\n      \"label\": \"قريب\"\n    },\n    {\n      \"value\": \"friend\",\n      \"label\": \"صديق\"\n    },\n    {\n      \"value\": \"doctor\",\n      \"label\": \"طبيب\"\n    },\n    {\n      \"value\": \"nurse\",\n      \"label\": \"ممرض/ممرضة\"\n    },\n    {\n      \"value\": \"hospital_staff\",\n      \"label\": \"موظف مستشفى\"\n    },\n    {\n      \"value\": \"health_entity\",\n      \"label\": \"ممثل جهة صحية\"\n    },\n    {\n      \"value\": \"other\",\n      \"label\": \"أخرى\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/appeal-required-times",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-required-times",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-required-times"
                          ]
                        },
                        "description": "## Purpose\nمصدر `required_time_type` (الموعد المطلوب: اليوم / في أقرب وقت / تحديد تاريخ ووقت) — قائمة الموعد المطلوب للنداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P19 Create Appeal / Enter Details — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealRequiredTime` بالترتيب المعرّف في الـ enum عبر `AppealRequiredTime::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `specific` يجعل `required_at` إجبارياً في فورم النداء.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/appeal-required-times",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "appeal-required-times"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"today\",\n      \"label\": \"اليوم\"\n    },\n    {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    {\n      \"value\": \"specific\",\n      \"label\": \"تحديد تاريخ ووقت\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/appeals",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appeals",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ النداءات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appeals (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appeals\": 0\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "community",
              "description": "Flow `community` — 2 endpoints (sprint 3). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "rare-donors",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"rare donors (availability, no contact data)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"is_available\"); pm.expect(o).to.have.property(\"availability\"); } });",
                          "pm.test(\"total\", () => { const o = pm.response.json().data.meta; pm.expect(o).to.have.property(\"total\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}donors/rare",
                      "host": [
                        "{{base_url}}donors"
                      ],
                      "path": [
                        "rare"
                      ],
                      "query": [
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "description": "optional · nullable|in:A-,B-,AB-,O- · الفصيلة النادرة",
                          "disabled": true
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "سارة",
                          "description": "optional · nullable|string|max:100 · بحث بالاسم",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nدليل متبرعي الفصائل النادرة.\n\n## Screens\n- U124 Rare Blood Type Donors — user app `760:7917`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7917&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7917&scaling=scale-down&content-scaling=fixed)\n- U124 Rare Blood Type Donors — user web `825:3837`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-3837&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-3837&scaling=scale-down&content-scaling=fixed)\n- U125 Rare v02 — user app `760:7934`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7934&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-7934&scaling=scale-down&content-scaling=fixed)\n- U126 Rare v03 — user app `760:8497`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-8497&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-8497&scaling=scale-down&content-scaling=fixed)\n- U127 Rare v04 — user app `760:8763`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-8763&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-8763&scaling=scale-down&content-scaling=fixed)\n- U128 Rare v05 — user app `760:8893`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-8893&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-8893&scaling=scale-down&content-scaling=fixed)\n- U129 Rare v06 — user app `760:9159`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9159&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9159&scaling=scale-down&content-scaling=fixed)\n- U130 Rare v07 — user app `760:9289`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9289&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9289&scaling=scale-down&content-scaling=fixed)\n- U131 Rare v08 — user app `760:9419`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9419&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9419&scaling=scale-down&content-scaling=fixed)\n- U132 Rare v09 — user app `760:9549`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9549&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=760-9549&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `blood_type` — optional · nullable|in:A-,B-,AB-,O- · الفصيلة النادرة · example: `O-`\n- `city_id` — optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث بالاسم · example: `سارة`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. مستخدمون بفصيلة سالبة (`BloodType::isRare()`)، `show_in_donor_lists=true`، `is_demo=false`، غير محظورين، غير محذوفين.\n2. فلاتر: `blood_type` (الكل/O-/AB-/B-/A-)، `city_id`، `search` (الاسم).\n3. لكل متبرع: الاسم، المدينة، الفصيلة، `is_available` (انتهت فترة الانتظار ∧ غير مستبعد) → «متاح/غير متاح للتبرع»، عدد التبرعات المكتملة.\n4. `meta.total` = «١١ متبرعاً».\n\n**Business rules / constraints:**\n- لا تُكشف أرقام التواصل — عرض فقط (brief §10.1).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (blood_type, city_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/rare",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "rare"
                          ],
                          "query": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|in:A-,B-,AB-,O- · الفصيلة النادرة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 28\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 19\n      },\n      {\n        \"id\": 9,\n        \"name\": \"هدى الغامدي\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"غير متاح للتبرع\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 15\n      },\n      {\n        \"id\": 10,\n        \"name\": \"سلطان الدوسري\",\n        \"city\": \"مكة المكرمة\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 13\n      },\n      {\n        \"id\": 11,\n        \"name\": \"ماجد الحربي\",\n        \"city\": \"المدينة المنورة\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"غير متاح للتبرع\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 11\n      },\n      {\n        \"id\": 12,\n        \"name\": \"نورة السبيعي\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 9\n      },\n      {\n        \"id\": 13,\n        \"name\": \"أمل الحربي\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"غير متاح للتبرع\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 8\n      },\n      {\n        \"id\": 15,\n        \"name\": \"سلطان العنزي\",\n        \"city\": \"المدينة المنورة\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 7\n      },\n      {\n        \"id\": 17,\n        \"name\": \"عبدالعزيز العسيري\",\n        \"city\": \"أبها\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 6\n      },\n      {\n        \"id\": 18,\n        \"name\": \"بندر الشهراني\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 4\n      },\n      {\n        \"id\": 19,\n        \"name\": \"يوسف الزهراني\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"غير متاح للتبرع\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 3\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 11,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 11\n    },\n    \"meta\": {\n      \"total\": 11\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/rare",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "rare"
                          ],
                          "query": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|in:A-,B-,AB-,O- · الفصيلة النادرة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"Available to donate\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 28\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"city\": \"Khobar\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"Available to donate\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 19\n      },\n      {\n        \"id\": 9,\n        \"name\": \"هدى الغامدي\",\n        \"city\": \"Dammam\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"Not available to donate\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 15\n      },\n      {\n        \"id\": 10,\n        \"name\": \"سلطان الدوسري\",\n        \"city\": \"Mecca\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"Available to donate\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 13\n      },\n      {\n        \"id\": 11,\n        \"name\": \"ماجد الحربي\",\n        \"city\": \"Medina\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"Not available to donate\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 11\n      },\n      {\n        \"id\": 12,\n        \"name\": \"نورة السبيعي\",\n        \"city\": \"Jeddah\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"Available to donate\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 9\n      },\n      {\n        \"id\": 13,\n        \"name\": \"أمل الحربي\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"Not available to donate\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 8\n      },\n      {\n        \"id\": 15,\n        \"name\": \"سلطان العنزي\",\n        \"city\": \"Medina\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"Available to donate\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 7\n      },\n      {\n        \"id\": 17,\n        \"name\": \"عبدالعزيز العسيري\",\n        \"city\": \"Abha\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"Available to donate\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 6\n      },\n      {\n        \"id\": 18,\n        \"name\": \"بندر الشهراني\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"Available to donate\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 4\n      },\n      {\n        \"id\": 19,\n        \"name\": \"يوسف الزهراني\",\n        \"city\": \"Jeddah\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"is_available\": false,\n        \"availability\": {\n          \"value\": \"unavailable\",\n          \"label\": \"Not available to donate\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"completed_donations_count\": 3\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 11,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 11\n    },\n    \"meta\": {\n      \"total\": 11\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · فصيلة O-",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/rare?blood_type=O-",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "rare"
                          ],
                          "query": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|in:A-,B-,AB-,O- · الفصيلة النادرة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 28\n      },\n      {\n        \"id\": 17,\n        \"name\": \"عبدالعزيز العسيري\",\n        \"city\": \"أبها\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 6\n      },\n      {\n        \"id\": 18,\n        \"name\": \"بندر الشهراني\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"is_available\": true,\n        \"availability\": {\n          \"value\": \"available\",\n          \"label\": \"متاح للتبرع\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"completed_donations_count\": 4\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    },\n    \"meta\": {\n      \"total\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (blood_type, city_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/rare?blood_type=A%2B&city_id=99999",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "rare"
                          ],
                          "query": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|in:A-,B-,AB-,O- · الفصيلة النادرة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث بالاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد فصيلة الدم غير صالح. (and 1 more error)\",\n  \"errors\": {\n    \"blood_type\": [\n      \"حقل المحدد فصيلة الدم غير صالح.\"\n    ],\n    \"city_id\": [\n      \"حقل المحدد المدينة غير صالح.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "distinguished-donors",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"donor cards with their badge\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"completed_donations_count\"); pm.expect(o).to.have.property(\"badge\"); pm.expect(o).to.have.property(\"level_label\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); pm.expect(o).to.have.property(\"meta\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}donors/distinguished",
                      "host": [
                        "{{base_url}}donors"
                      ],
                      "path": [
                        "distinguished"
                      ],
                      "query": [
                        {
                          "key": "sort",
                          "value": "desc",
                          "description": "optional · nullable|in:desc,asc (default desc) · الأكثر/الأقل",
                          "disabled": true
                        },
                        {
                          "key": "badge",
                          "value": "diamond",
                          "description": "optional · nullable|exists:badges,key (active, not deleted) · فلتر المستوى · source: GET badges → value",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nالمتبرعون المتميزون — قائمة واحدة، كل متبرع بوسامه، مع فلتر بالمستوى.\n\n## Screens\n- U133 Distinguished Donors (الأكثر) — user app `758:771`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&scaling=scale-down&content-scaling=fixed)\n- U133 Distinguished Donors (الأكثر) — user web `825:8591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&scaling=scale-down&content-scaling=fixed)\n- U134 Distinguished v02 (الأقل) — user app `758:3088`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-3088&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-3088&scaling=scale-down&content-scaling=fixed)\n- U134 Distinguished v02 (الأقل) — user web `825:9243`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-9243&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-9243&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `sort` — optional · nullable|in:desc,asc (default desc) · الأكثر/الأقل · example: `desc`\n- `badge` — optional · nullable|exists:badges,key (active, not deleted) · فلتر المستوى · source: GET badges → value · example: `diamond`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. متبرعون بـ ≥ 5 تبرعات مكتملة، `show_in_donor_lists=true`، `is_demo=false`.\n2. قائمة واحدة مسطّحة (بدون تجميع) مرتبة بعدد التبرعات المكتملة `sort=desc|asc` (الأكثر/الأقل)، مقسّمة صفحات (١٥/صفحة).\n3. كل كارت يحمل وسامه الحالي `badge` + `level_label` (المستوى من جدول `badges` — يديره الأدمن).\n4. فلتر `badge=<key>` (من `GET badges` → `value`) يعرض فقط من مستواهم الحالي هذا الوسام (مثلاً `diamond` = ٢٥–٤٩ تبرعاً).\n5. `meta.total` = «16 متبرعاً أكملوا ٥ تبرعات» (بعد الفلتر).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (sort, badge) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/distinguished?sort=desc",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "distinguished"
                          ],
                          "query": [
                            {
                              "key": "sort",
                              "value": "desc",
                              "description": "optional · nullable|in:desc,asc (default desc) · الأكثر/الأقل",
                              "disabled": true
                            },
                            {
                              "key": "badge",
                              "value": "diamond",
                              "description": "optional · nullable|exists:badges,key (active, not deleted) · فلتر المستوى · source: GET badges → value",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"وسام بطل العطاء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"أعلى مستوى\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"فهد المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 16,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 9,\n        \"name\": \"هدى الغامدي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 15,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"سلطان الدوسري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"مكة المكرمة\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"completed_donations_count\": 13,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"الوسام الفضي\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"المستوى الثاني\"\n      },\n      {\n        \"id\": 1,\n        \"name\": \"محمد أحمد القحطاني\",\n        \"image\": \"http://help.test/storage/uploads/users/1792678936_6ada1c18f0d24.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 12,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"الوسام الفضي\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"المستوى الثاني\"\n      },\n      {\n        \"id\": 11,\n        \"name\": \"ماجد الحربي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"المدينة المنورة\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"completed_donations_count\": 11,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"الوسام الفضي\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"المستوى الثاني\"\n      },\n      {\n        \"id\": 12,\n        \"name\": \"نورة السبيعي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 9,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 13,\n        \"name\": \"أمل الحربي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"completed_donations_count\": 8,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 14,\n        \"name\": \"ريم العنزي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 7,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 15,\n        \"name\": \"سلطان العنزي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"المدينة المنورة\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"completed_donations_count\": 7,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 17,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"total\": 17\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/distinguished?sort=desc",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "distinguished"
                          ],
                          "query": [
                            {
                              "key": "sort",
                              "value": "desc",
                              "description": "optional · nullable|in:desc,asc (default desc) · الأكثر/الأقل",
                              "disabled": true
                            },
                            {
                              "key": "badge",
                              "value": "diamond",
                              "description": "optional · nullable|exists:badges,key (active, not deleted) · فلتر المستوى · source: GET badges → value",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 2,\n        \"name\": \"عبدالله الشهري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 52,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"hero\",\n          \"label\": \"Giving hero badge\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\",\n          \"image\": \"http://help.test/uploads/badges/hero.png\"\n        },\n        \"level_label\": \"Top level\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Jeddah\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"Diamond badge\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"Level four\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Dammam\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Khobar\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"فهد المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 16,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      },\n      {\n        \"id\": 9,\n        \"name\": \"هدى الغامدي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Dammam\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 15,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"Gold badge\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"Level three\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"سلطان الدوسري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Mecca\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"completed_donations_count\": 13,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"Silver badge\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"Level two\"\n      },\n      {\n        \"id\": 1,\n        \"name\": \"محمد أحمد القحطاني\",\n        \"image\": \"http://help.test/storage/uploads/users/1792678936_6ada1c18f0d24.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 12,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"Silver badge\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"Level two\"\n      },\n      {\n        \"id\": 11,\n        \"name\": \"ماجد الحربي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Medina\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"completed_donations_count\": 11,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"Silver badge\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"Level two\"\n      },\n      {\n        \"id\": 12,\n        \"name\": \"نورة السبيعي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Jeddah\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 9,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"Bronze badge\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"Level one\"\n      },\n      {\n        \"id\": 13,\n        \"name\": \"أمل الحربي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Riyadh\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"completed_donations_count\": 8,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"Bronze badge\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"Level one\"\n      },\n      {\n        \"id\": 14,\n        \"name\": \"ريم العنزي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Khobar\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 7,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"Bronze badge\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"Level one\"\n      },\n      {\n        \"id\": 15,\n        \"name\": \"سلطان العنزي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"Medina\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"completed_donations_count\": 7,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"Bronze badge\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"Level one\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 17,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"total\": 17\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · تصاعدي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/distinguished?sort=asc",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "distinguished"
                          ],
                          "query": [
                            {
                              "key": "sort",
                              "value": "desc",
                              "description": "optional · nullable|in:desc,asc (default desc) · الأكثر/الأقل",
                              "disabled": true
                            },
                            {
                              "key": "badge",
                              "value": "diamond",
                              "description": "optional · nullable|exists:badges,key (active, not deleted) · فلتر المستوى · source: GET badges → value",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 17,\n        \"name\": \"عبدالعزيز العسيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"أبها\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 6,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 16,\n        \"name\": \"تركي الغامدي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"أبها\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 6,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 15,\n        \"name\": \"سلطان العنزي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"المدينة المنورة\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"completed_donations_count\": 7,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 14,\n        \"name\": \"ريم العنزي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 7,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 13,\n        \"name\": \"أمل الحربي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"completed_donations_count\": 8,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 12,\n        \"name\": \"نورة السبيعي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 9,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"bronze\",\n          \"label\": \"الوسام البرونزي\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/bronze.png\"\n        },\n        \"level_label\": \"المستوى الأول\"\n      },\n      {\n        \"id\": 11,\n        \"name\": \"ماجد الحربي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"المدينة المنورة\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"completed_donations_count\": 11,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"الوسام الفضي\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"المستوى الثاني\"\n      },\n      {\n        \"id\": 1,\n        \"name\": \"محمد أحمد القحطاني\",\n        \"image\": \"http://help.test/storage/uploads/users/1792678936_6ada1c18f0d24.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"completed_donations_count\": 12,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"الوسام الفضي\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"المستوى الثاني\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"سلطان الدوسري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"مكة المكرمة\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"completed_donations_count\": 13,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"silver\",\n          \"label\": \"الوسام الفضي\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\",\n          \"image\": \"http://help.test/uploads/badges/silver.png\"\n        },\n        \"level_label\": \"المستوى الثاني\"\n      },\n      {\n        \"id\": 9,\n        \"name\": \"هدى الغامدي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 15,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"فهد المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 16,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 7,\n        \"name\": \"ريم المطيري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الخبر\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"completed_donations_count\": 19,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 6,\n        \"name\": \"نورة القحطاني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الدمام\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"completed_donations_count\": 22,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"gold\",\n          \"label\": \"الوسام الذهبي\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\",\n          \"image\": \"http://help.test/uploads/badges/gold.png\"\n        },\n        \"level_label\": \"المستوى الثالث\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 17,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"total\": 17\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · فلتر المستوى",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/distinguished?badge=diamond",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "distinguished"
                          ],
                          "query": [
                            {
                              "key": "sort",
                              "value": "desc",
                              "description": "optional · nullable|in:desc,asc (default desc) · الأكثر/الأقل",
                              "disabled": true
                            },
                            {
                              "key": "badge",
                              "value": "diamond",
                              "description": "optional · nullable|exists:badges,key (active, not deleted) · فلتر المستوى · source: GET badges → value",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 3,\n        \"name\": \"لطيفة الزهراني\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"جدة\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"completed_donations_count\": 43,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 4,\n        \"name\": \"خالد العتيبي\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"completed_donations_count\": 34,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      },\n      {\n        \"id\": 5,\n        \"name\": \"سارة الشمري\",\n        \"image\": \"http://help.test/defaults/default.png\",\n        \"city\": \"الرياض\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"completed_donations_count\": 28,\n        \"is_deleted_account\": false,\n        \"badge\": {\n          \"value\": \"diamond\",\n          \"label\": \"الوسام الماسي\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\",\n          \"image\": \"http://help.test/uploads/badges/diamond.png\"\n        },\n        \"level_label\": \"المستوى الرابع\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    },\n    \"meta\": {\n      \"total\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (sort, badge)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}donors/distinguished?sort=random&badge=unknown",
                          "host": [
                            "{{base_url}}donors"
                          ],
                          "path": [
                            "distinguished"
                          ],
                          "query": [
                            {
                              "key": "sort",
                              "value": "desc",
                              "description": "optional · nullable|in:desc,asc (default desc) · الأكثر/الأقل",
                              "disabled": true
                            },
                            {
                              "key": "badge",
                              "value": "diamond",
                              "description": "optional · nullable|exists:badges,key (active, not deleted) · فلتر المستوى · source: GET badges → value",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"القيمة المحددة في الترتيب غير صالحة. (and 1 more error)\",\n  \"errors\": {\n    \"sort\": [\n      \"القيمة المحددة في الترتيب غير صالحة.\"\n    ],\n    \"badge\": [\n      \"القيمة المحددة في المستوى غير صالحة.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `community` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "badges",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"badge levels with thresholds\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"min_donations\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });",
                              "pm.test(\"five levels\", () => pm.expect(pm.response.json().data).to.have.length(5));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}badges",
                          "host": [
                            "{{base_url}}badges"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر مستويات الشارات (badge.level) — الأوسمة الخمسة وحدودها (شاشة المتميزين).\n\n## Screens\n- U133 Distinguished Donors — user app `758:771`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=758-771&scaling=scale-down&content-scaling=fixed)\n- U133 Distinguished Donors — user web `825:8591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-8591&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع أوسمة جدول `badges` (المُدارة من لوحة التحكم) مرتّبة تصاعديًا بالحد الأدنى للتبرعات، مع الاسم المترجم + تسمية المستوى + الحد الأدنى + الألوان + **أيقونة الوسام** (`image`).\n\n**Business rules / constraints:**\n- المستويات والحدود تُدار من الداشبورد (جدول `badges`: `min_donations` + رفع أيقونة لكل وسام). البذرة الافتراضية: برونزي 5 · فضي 10 · ذهبي 15 · ماسي 25 · بطل العطاء 50 (التسمية «المستوى الأول…الرابع / أعلى مستوى»).\n- الوسام يُحسب من عدد التبرعات **المكتملة** (`donations.status in completed,used`) — أعلى وسام حدُّه ≤ عدد التبرعات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}badges",
                              "host": [
                                "{{base_url}}badges"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"bronze\",\n      \"label\": \"الوسام البرونزي\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/bronze.png\",\n      \"level_label\": \"المستوى الأول\",\n      \"min_donations\": 5\n    },\n    {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\",\n      \"image\": \"http://help.test/uploads/badges/silver.png\",\n      \"level_label\": \"المستوى الثاني\",\n      \"min_donations\": 10\n    },\n    {\n      \"value\": \"gold\",\n      \"label\": \"الوسام الذهبي\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/gold.png\",\n      \"level_label\": \"المستوى الثالث\",\n      \"min_donations\": 15\n    },\n    {\n      \"value\": \"diamond\",\n      \"label\": \"الوسام الماسي\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\",\n      \"image\": \"http://help.test/uploads/badges/diamond.png\",\n      \"level_label\": \"المستوى الرابع\",\n      \"min_donations\": 25\n    },\n    {\n      \"value\": \"hero\",\n      \"label\": \"وسام بطل العطاء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"image\": \"http://help.test/uploads/badges/hero.png\",\n      \"level_label\": \"أعلى مستوى\",\n      \"min_donations\": 50\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}badges",
                              "host": [
                                "{{base_url}}badges"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"bronze\",\n      \"label\": \"Bronze badge\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/bronze.png\",\n      \"level_label\": \"Level one\",\n      \"min_donations\": 5\n    },\n    {\n      \"value\": \"silver\",\n      \"label\": \"Silver badge\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\",\n      \"image\": \"http://help.test/uploads/badges/silver.png\",\n      \"level_label\": \"Level two\",\n      \"min_donations\": 10\n    },\n    {\n      \"value\": \"gold\",\n      \"label\": \"Gold badge\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"image\": \"http://help.test/uploads/badges/gold.png\",\n      \"level_label\": \"Level three\",\n      \"min_donations\": 15\n    },\n    {\n      \"value\": \"diamond\",\n      \"label\": \"Diamond badge\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\",\n      \"image\": \"http://help.test/uploads/badges/diamond.png\",\n      \"level_label\": \"Level four\",\n      \"min_donations\": 25\n    },\n    {\n      \"value\": \"hero\",\n      \"label\": \"Giving hero badge\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"image\": \"http://help.test/uploads/badges/hero.png\",\n      \"level_label\": \"Top level\",\n      \"min_donations\": 50\n    }\n  ]\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "content",
              "description": "Flow `content` — 5 endpoints (sprint 3). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "stories",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"story cards\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"excerpt\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}stories",
                      "host": [
                        "{{base_url}}stories"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "type",
                          "value": "donor",
                          "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة قصص العطاء بالتبويب.\n\n## Screens\n- U93 Giving Stories (الكل) — user app `765:11751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-11751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-11751&scaling=scale-down&content-scaling=fixed)\n- U93 Giving Stories (الكل) — user web `825:9895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-9895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-9895&scaling=scale-down&content-scaling=fixed)\n- U94 Stories v02 (المتبرعين) — user app `765:12025`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12025&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12025&scaling=scale-down&content-scaling=fixed)\n- U95 Stories v03 (المستفيدين) — user app `765:12384`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12384&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12384&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `type` — optional · nullable|Rule::enum(StoryType::class) · التبويب · example: `donor`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. قصص `is_published=true` مرتبة بـ `published_on` تنازلياً.\n2. `type`: donor (قصص المتبرعين) / beneficiary (المستفيدين) / life_saving (web: قصص إنقاذ الحياة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (type) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "donor",
                              "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 3,\n        \"author_name\": \"أحمد المطيري\",\n        \"published_on\": \"٢٠ فبراير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"لحظة أنقذنا فيها طفلًا\",\n        \"excerpt\": \"نداء عاجل وصل في منتصف الليل، وخلال ساعتين كان عشرة متبرعين في المستشفى.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 2,\n        \"author_name\": \"سارة الشمري\",\n        \"published_on\": \"٣ فبراير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"المتبرعون أنقذوا حياتي\",\n        \"excerpt\": \"احتجت إلى عدة وحدات دم بعد عملية ولادة معقدة، ووجدتها بفضل متبرعين لا أعرفهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 1,\n        \"author_name\": \"محمد القحطاني\",\n        \"published_on\": \"١٥ يناير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"تبرع بسيط صنع فرقًا كبيرًا\",\n        \"excerpt\": \"بدأت رحلتي بتبرع واحد في ظهيرة عادية، واليوم أكملت اثني عشر تبرعاً.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "donor",
                              "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"Layla Al-Harbi\",\n        \"published_on\": \"21 May 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"A gift from an unknown heart\",\n        \"excerpt\": \"I received units that saved my son from serious complications and I do not know the donors to thank them.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"Abdullah Al-Shehri\",\n        \"published_on\": \"2 May 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"First donation, finest feeling\",\n        \"excerpt\": \"I was nervous before my first donation, but the center team made it easy and reassuring.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"Khaled Al-Otaibi\",\n        \"published_on\": \"12 April 2025\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"Life-saving story\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"A race against time\",\n        \"excerpt\": \"I reached the hospital twenty minutes after reading the appeal and my unit was the first one used.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"Fatima Al-Zahrani\",\n        \"published_on\": \"27 March 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"What donation did for my family\",\n        \"excerpt\": \"My father needs monthly transfusions; without donors we could not carry on.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"Noura Al-Otaibi\",\n        \"published_on\": \"8 March 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"Ten years of giving\",\n        \"excerpt\": \"I have donated regularly for ten years and feel the same joy every time.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 3,\n        \"author_name\": \"Ahmed Al-Mutairi\",\n        \"published_on\": \"20 February 2025\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"Life-saving story\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"The moment we saved a child\",\n        \"excerpt\": \"An urgent appeal arrived at midnight and within two hours ten donors were at the hospital.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 2,\n        \"author_name\": \"Sarah Al-Shammari\",\n        \"published_on\": \"3 February 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"Donors saved my life\",\n        \"excerpt\": \"I needed several units after a complicated delivery and found them thanks to donors I do not know.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 1,\n        \"author_name\": \"Mohammed Al-Qahtani\",\n        \"published_on\": \"15 January 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"A simple donation made a big difference\",\n        \"excerpt\": \"My journey began with one donation on an ordinary afternoon; today I have completed twelve.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · قصص المتبرعين فقط",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories?type=donor",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "donor",
                              "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 1,\n        \"author_name\": \"محمد القحطاني\",\n        \"published_on\": \"١٥ يناير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"تبرع بسيط صنع فرقًا كبيرًا\",\n        \"excerpt\": \"بدأت رحلتي بتبرع واحد في ظهيرة عادية، واليوم أكملت اثني عشر تبرعاً.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (type)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories?type=unknown",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "donor",
                              "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد النوع غير صالح.\",\n  \"errors\": {\n    \"type\": [\n      \"حقل المحدد النوع غير صالح.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "story-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"story detail\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"body\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}stories/{id}",
                      "host": [
                        "{{base_url}}stories"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "1",
                          "description": "required · published story · القصة · source: GET {{base_url}}stories"
                        }
                      ]
                    },
                    "description": "## Purpose\nنص القصة الكامل + قصص أخرى.\n\n## Screens\n- U96 Story Details — user app `767:215`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-215&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=767-215&scaling=scale-down&content-scaling=fixed)\n- U96 Story Details — user web `825:10209`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10209&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-10209&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `id` — required · published story · القصة · source: GET {{base_url}}stories · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. قصة منشورة كاملة + `related` (3 قصص أخرى من نفس النوع ثم الأحدث).\n2. زر «ابدأ رحلة العطاء» → U21 (client).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | قصة غير منشورة | `messages.not_found` | العنصر غير موجود | Not found |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories/{id}",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · published story · القصة · source: GET {{base_url}}stories"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"author_name\": \"محمد القحطاني\",\n    \"published_on\": \"2025-01-15\",\n    \"type\": {\n      \"value\": \"donor\",\n      \"label\": \"متبرع\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"title\": \"تبرع بسيط صنع فرقًا كبيرًا\",\n    \"body\": \"لم أكن أتخيل أن ثلاثين دقيقة من وقتي يمكن أن تغيّر حياة إنسان. كانت زيارتي الأولى بدافع الفضول، لكن ابتسامة الممرضة وكلمة الشكر جعلتاني أعود كل ثلاثة أشهر. اليوم أعرف أن وحدة دمي وصلت إلى مريض كان ينتظرها، وهذا أجمل شعور يمكن أن أحمله.\",\n    \"image\": \"http://help.test/uploads/stories/1.png\",\n    \"related\": [\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"2025-05-02\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"2025-03-08\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"2025-05-21\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories/{id}",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · published story · القصة · source: GET {{base_url}}stories"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"author_name\": \"Mohammed Al-Qahtani\",\n    \"published_on\": \"2025-01-15\",\n    \"type\": {\n      \"value\": \"donor\",\n      \"label\": \"Donor\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"title\": \"A simple donation made a big difference\",\n    \"body\": \"I never imagined thirty minutes of my time could change someone's life. My first visit was out of curiosity, but the nurse's smile and a word of thanks made me return every three months. Today I know my unit reached a patient who was waiting for it, and that is the best feeling I could carry.\",\n    \"image\": \"http://help.test/uploads/stories/1.png\",\n    \"related\": [\n      {\n        \"id\": 7,\n        \"author_name\": \"Abdullah Al-Shehri\",\n        \"published_on\": \"2025-05-02\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"First donation, finest feeling\",\n        \"excerpt\": \"I was nervous before my first donation, but the center team made it easy and reassuring.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"Noura Al-Otaibi\",\n        \"published_on\": \"2025-03-08\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"Ten years of giving\",\n        \"excerpt\": \"I have donated regularly for ten years and feel the same joy every time.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 8,\n        \"author_name\": \"Layla Al-Harbi\",\n        \"published_on\": \"2025-05-21\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"A gift from an unknown heart\",\n        \"excerpt\": \"I received units that saved my son from serious complications and I do not know the donors to thank them.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — قصة غير منشورة",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories/{id}",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · published story · القصة · source: GET {{base_url}}stories"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "guidelines",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"guideline section\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"section\"); pm.expect(o).to.have.property(\"items\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}guidelines",
                      "host": [
                        "{{base_url}}guidelines"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "type",
                          "value": "preparation",
                          "description": "required · required|in:before,during,after,preparation · القسم",
                          "disabled": false
                        },
                        {
                          "key": "donation_type_id",
                          "value": "2",
                          "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nمحتوى الإرشادات (قبل/أثناء/بعد) وتعليمات التحضير لكل نوع.\n\n## Screens\n- U57 Guidelines / Before — user app `424:4215`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4215&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4215&scaling=scale-down&content-scaling=fixed)\n- U57 Guidelines / Before — user web `86:11537`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11537&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11537&scaling=scale-down&content-scaling=fixed)\n- U58 Guidelines / During — user app `424:4322`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4322&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4322&scaling=scale-down&content-scaling=fixed)\n- U58 Guidelines / During — user web `86:11769`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11769&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11769&scaling=scale-down&content-scaling=fixed)\n- U59 Guidelines / After — user app `424:4427`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4427&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-4427&scaling=scale-down&content-scaling=fixed)\n- U59 Guidelines / After — user web `86:12001`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-12001&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-12001&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user app `424:8582`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8582&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-8582&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user app `2251:1098`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user web `2295:5557`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5557&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5557&scaling=scale-down&content-scaling=fixed)\n- U31 Preparation Instructions («اختر موعدك») — user web `84:2216`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2216&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2216&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user app `424:12843`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12843&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12843&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user web `2295:5274`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5274&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5274&scaling=scale-down&content-scaling=fixed)\n- U37 Preparation v02 («لقد قرأت التعليمات») — user web `84:2550`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2550&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=84-2550&scaling=scale-down&content-scaling=fixed)\n- U152 Preparation (من مركز) — user app `2251:278`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-278&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-278&scaling=scale-down&content-scaling=fixed)\n- U157 Preparation v3 (من مركز) — user app `2251:1098`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-1098&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `type` — required · required|in:before,during,after,preparation · القسم · example: `preparation`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types · example: `2`\n\n\n## Behaviour notes\n**Steps:**\n1. `type` = before | during | after | preparation.\n2. `preparation` + `donation_type_id`: البنود العامة (`donation_type_id` null) + الخاصة بالنوع (مثلاً الصفائح: «تستغرق ٩٠ دقيقة… لا أسبرين قبل ٤٨ ساعة»).\n3. يرجع `section` (عنوان + وصف) + `items[]` (عنوان، نص، نقاط، أيقونة) مرتبة + `alert` (تنبيه التحضير).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (type, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines?type=preparation&donation_type_id=2",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "preparation",
                              "description": "required · required|in:before,during,after,preparation · القسم",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"section\": {\n      \"type\": {\n        \"value\": \"preparation\",\n        \"label\": \"التحضير للتبرع\"\n      },\n      \"image\": \"http://help.test/guidelines/preparation.png\",\n      \"title\": \"قبل موعدك\",\n      \"description\": \"اتبع هذه التعليمات لتجربة تبرع مريحة\"\n    },\n    \"items\": [\n      {\n        \"id\": 16,\n        \"title\": \"الطعام\",\n        \"body\": \"تناول وجبة صحية قبل الموعد بساعتين وتجنب الأطعمة الدهنية.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 17,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"الترطيب\",\n        \"body\": \"اشرب الماء بكثرة خلال اليوم السابق ويوم التبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      },\n      {\n        \"id\": 18,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"المستندات\",\n        \"body\": \"أحضر الهوية الوطنية أو الإقامة ورمز الحجز.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      },\n      {\n        \"id\": 19,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"مدة الجلسة\",\n        \"body\": \"خصّص ما بين ٣٠ و٩٠ دقيقة بحسب نوع التبرع، وصل قبل الموعد بعشر دقائق.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 21,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"التحضير للتبرع\"\n        },\n        \"title\": \"تحضير التبرع بالصفائح\",\n        \"body\": \"تستغرق الجلسة ٩٠ دقيقة. لا أسبرين قبل ٤٨ ساعة من التبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      }\n    ],\n    \"alert\": \"أحضر هويتك الوطنية\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines?type=preparation&donation_type_id=2",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "preparation",
                              "description": "required · required|in:before,during,after,preparation · القسم",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"section\": {\n      \"type\": {\n        \"value\": \"preparation\",\n        \"label\": \"Preparation\"\n      },\n      \"image\": \"http://help.test/guidelines/preparation.png\",\n      \"title\": \"Before your appointment\",\n      \"description\": \"Follow these instructions for a comfortable donation\"\n    },\n    \"items\": [\n      {\n        \"id\": 16,\n        \"title\": \"Food\",\n        \"body\": \"Have a healthy meal two hours before your appointment and avoid fatty food.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 17,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Hydration\",\n        \"body\": \"Drink plenty of water the day before and on the day of donation.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      },\n      {\n        \"id\": 18,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Documents\",\n        \"body\": \"Bring your national ID or iqama and your booking code.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      },\n      {\n        \"id\": 19,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Session length\",\n        \"body\": \"Allow 30 to 90 minutes depending on the donation type and arrive ten minutes early.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 21,\n        \"type\": {\n          \"value\": \"preparation\",\n          \"label\": \"Preparation\"\n        },\n        \"title\": \"Platelets preparation\",\n        \"body\": \"The session takes 90 minutes. No aspirin for 48 hours before donating.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      }\n    ],\n    \"alert\": \"Bring your national ID\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · قبل التبرع",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines?type=before",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "preparation",
                              "description": "required · required|in:before,during,after,preparation · القسم",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"section\": {\n      \"type\": {\n        \"value\": \"before\",\n        \"label\": \"قبل التبرع\"\n      },\n      \"image\": \"http://help.test/guidelines/before.png\",\n      \"title\": \"قبل التبرع\",\n      \"description\": \"كيف تستعد للتبرع\"\n    },\n    \"items\": [\n      {\n        \"id\": 1,\n        \"title\": \"وجبة صحية\",\n        \"body\": \"تناول وجبة متوازنة غنية بالحديد قبل التبرع بساعتين إلى ثلاث ساعات.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 2,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"الماء\",\n        \"body\": \"اشرب كمية كافية من الماء، ويُفضّل نصف لتر إضافي قبل التبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      },\n      {\n        \"id\": 3,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"النوم\",\n        \"body\": \"احصل على ٦ إلى ٨ ساعات من النوم في الليلة السابقة للتبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      },\n      {\n        \"id\": 4,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"المستندات\",\n        \"body\": \"أحضر هويتك الوطنية أو الإقامة وهاتفك لإظهار رمز الحجز.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 5,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"ما يجب تجنبه\",\n        \"body\": \"تجنب التدخين قبل ساعتين، والأطعمة الدسمة، والكحول خلال ٢٤ ساعة، والمجهود الشاق.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      }\n    ],\n    \"alert\": null\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (type)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "preparation",
                              "description": "required · required|in:before,during,after,preparation · القسم",
                              "disabled": false
                            },
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "description": "optional · nullable|exists:donation_types,id · نوع التبرع (للتحضير) · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل النوع مطلوب.\",\n  \"errors\": {\n    \"type\": [\n      \"الحقل النوع مطلوب.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "guideline-sections",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"guideline sections\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"important\"); pm.expect(o).to.have.property(\"sections\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}guidelines/sections",
                      "host": [
                        "{{base_url}}guidelines"
                      ],
                      "path": [
                        "sections"
                      ],
                      "query": [
                        {
                          "key": "search",
                          "value": "الماء",
                          "description": "optional · nullable|string|max:100 · بحث",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nفهرس الإرشادات الطبية + البحث.\n\n## Screens\n- U60 Medical Guidelines (index) — user app `424:5590`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-5590&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-5590&scaling=scale-down&content-scaling=fixed)\n- U60 Medical Guidelines (index) — user web `86:11300`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11300&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-11300&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `search` — optional · nullable|string|max:100 · بحث · example: `الماء`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع الأقسام الثلاثة (قبل/أثناء/بعد) بعنوانها ووصفها وعدد البنود + كتلة «تعليمات هامة».\n2. `search` يبحث في عناوين/نصوص البنود ويرجع النتائج المطابقة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (search) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines/sections",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [
                            "sections"
                          ],
                          "query": [
                            {
                              "key": "search",
                              "value": "الماء",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"important\": {\n      \"title\": \"تعليمات هامة\",\n      \"body\": \"اتبع الإرشادات لسلامتك\"\n    },\n    \"sections\": [\n      {\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"image\": \"http://help.test/guidelines/before.png\",\n        \"title\": \"قبل التبرع\",\n        \"description\": \"كيف تستعد للتبرع\",\n        \"items_count\": 5\n      },\n      {\n        \"type\": {\n          \"value\": \"during\",\n          \"label\": \"أثناء التبرع\"\n        },\n        \"image\": \"http://help.test/guidelines/during.png\",\n        \"title\": \"أثناء التبرع\",\n        \"description\": \"ماذا يحدث أثناء التبرع\",\n        \"items_count\": 5\n      },\n      {\n        \"type\": {\n          \"value\": \"after\",\n          \"label\": \"بعد التبرع\"\n        },\n        \"image\": \"http://help.test/guidelines/after.png\",\n        \"title\": \"بعد التبرع\",\n        \"description\": \"العناية بنفسك بعد التبرع\",\n        \"items_count\": 5\n      }\n    ],\n    \"search_results\": []\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines/sections",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [
                            "sections"
                          ],
                          "query": [
                            {
                              "key": "search",
                              "value": "الماء",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"important\": {\n      \"title\": \"Important instructions\",\n      \"body\": \"Follow the guidelines for your safety\"\n    },\n    \"sections\": [\n      {\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"Before donating\"\n        },\n        \"image\": \"http://help.test/guidelines/before.png\",\n        \"title\": \"Before donating\",\n        \"description\": \"How to prepare for your donation\",\n        \"items_count\": 5\n      },\n      {\n        \"type\": {\n          \"value\": \"during\",\n          \"label\": \"During donation\"\n        },\n        \"image\": \"http://help.test/guidelines/during.png\",\n        \"title\": \"During donation\",\n        \"description\": \"What happens during the donation\",\n        \"items_count\": 5\n      },\n      {\n        \"type\": {\n          \"value\": \"after\",\n          \"label\": \"After donating\"\n        },\n        \"image\": \"http://help.test/guidelines/after.png\",\n        \"title\": \"After donating\",\n        \"description\": \"Taking care of yourself after donating\",\n        \"items_count\": 5\n      }\n    ],\n    \"search_results\": []\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · بحث",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines/sections?search=%D8%A7%D9%84%D8%AA%D8%A8%D8%B1%D8%B9",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [
                            "sections"
                          ],
                          "query": [
                            {
                              "key": "search",
                              "value": "الماء",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"important\": {\n      \"title\": \"تعليمات هامة\",\n      \"body\": \"اتبع الإرشادات لسلامتك\"\n    },\n    \"sections\": [\n      {\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"image\": \"http://help.test/guidelines/before.png\",\n        \"title\": \"قبل التبرع\",\n        \"description\": \"كيف تستعد للتبرع\",\n        \"items_count\": 5\n      },\n      {\n        \"type\": {\n          \"value\": \"during\",\n          \"label\": \"أثناء التبرع\"\n        },\n        \"image\": \"http://help.test/guidelines/during.png\",\n        \"title\": \"أثناء التبرع\",\n        \"description\": \"ماذا يحدث أثناء التبرع\",\n        \"items_count\": 5\n      },\n      {\n        \"type\": {\n          \"value\": \"after\",\n          \"label\": \"بعد التبرع\"\n        },\n        \"image\": \"http://help.test/guidelines/after.png\",\n        \"title\": \"بعد التبرع\",\n        \"description\": \"العناية بنفسك بعد التبرع\",\n        \"items_count\": 5\n      }\n    ],\n    \"search_results\": [\n      {\n        \"id\": 1,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"وجبة صحية\",\n        \"body\": \"تناول وجبة متوازنة غنية بالحديد قبل التبرع بساعتين إلى ثلاث ساعات.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/2.png\"\n      },\n      {\n        \"id\": 2,\n        \"type\": {\n          \"value\": \"before\",\n          \"label\": \"قبل التبرع\"\n        },\n        \"title\": \"الماء\",\n        \"body\": \"اشرب كمية كافية من الماء، ويُفضّل نصف لتر إضافي قبل التبرع.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      },\n      {\n        \"id\": 6,\n        \"type\": {\n          \"value\": \"during\",\n          \"label\": \"أثناء التبرع\"\n        },\n        \"title\": \"الاسترخاء\",\n        \"body\": \"اجلس بوضع مريح وتنفّس بعمق، فالتبرع آمن ولا يستغرق طويلاً.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/1.png\"\n      },\n      {\n        \"id\": 11,\n        \"type\": {\n          \"value\": \"after\",\n          \"label\": \"بعد التبرع\"\n        },\n        \"title\": \"الراحة\",\n        \"body\": \"ارتح لمدة ١٠ إلى ١٥ دقيقة بعد التبرع قبل المغادرة.\",\n        \"points\": [],\n        \"icon\": \"http://help.test/uploads/guidelines/3.png\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (search)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}guidelines/sections?search=%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7%D8%A7",
                          "host": [
                            "{{base_url}}guidelines"
                          ],
                          "path": [
                            "sections"
                          ],
                          "query": [
                            {
                              "key": "search",
                              "value": "الماء",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يجب ان يكون طول حقل البحث اكبر من 100 حروفٍ/حرفًا.\",\n  \"errors\": {\n    \"search\": [\n      \"لا يجب ان يكون طول حقل البحث اكبر من 100 حروفٍ/حرفًا.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "health-tips",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"health tips\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"body\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}health-tips",
                      "host": [
                        "{{base_url}}health-tips"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "today",
                          "value": "1",
                          "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nالنصائح الصحية (كارت/نصيحة اليوم).\n\n## Screens\n- U2 إرشاد صحي (card component) — user app `424:10121`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10121&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-10121&scaling=scale-down&content-scaling=fixed)\n- W10 «نصيحة صحية اليوم» (web) — user web `424:14377`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-14377&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `today` — optional · nullable|boolean · نصيحة اليوم فقط · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. النصائح النشطة مرتبة؛ `?today=1` يرجع نصيحة واحدة دوّارة يومياً (`dayOfYear % count`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\nNo business errors — a public read with no input to validate and no access rule; the only failure is the global `api` throttle (429 `messages.throttled`)."
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}health-tips",
                          "host": [
                            "{{base_url}}health-tips"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "today",
                              "value": "1",
                              "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"title\": \"اشرب الماء بكثرة\",\n      \"body\": \"شرب الماء قبل وبعد التبرع يساعد جسمك على تعويض السوائل بسرعة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"title\": \"تناول الأطعمة الغنية بالحديد\",\n      \"body\": \"اللحوم والبقوليات والسبانخ ترفع مخزون الحديد وتجهزك للتبرع القادم.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"title\": \"نم جيداً قبل التبرع\",\n      \"body\": \"النوم من ٦ إلى ٨ ساعات يقلل احتمال الدوخة أثناء التبرع.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"title\": \"تبرعك الواحد ينقذ ٣ أرواح\",\n      \"body\": \"يمكن فصل الدم الكامل إلى كريات حمراء وصفائح وبلازما لتفيد ثلاثة مرضى.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 6,\n      \"title\": \"التزم بفترة الانتظار\",\n      \"body\": \"الالتزام بفترة الانتظار بين التبرعات يحمي صحتك ويحافظ على مخزون الحديد.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}health-tips",
                          "host": [
                            "{{base_url}}health-tips"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "today",
                              "value": "1",
                              "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"title\": \"Drink plenty of water\",\n      \"body\": \"Drinking water before and after donating helps your body replace fluids quickly.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"title\": \"Eat iron-rich food\",\n      \"body\": \"Meat, legumes and spinach raise your iron stores and prepare you for the next donation.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"title\": \"Sleep well before donating\",\n      \"body\": \"Six to eight hours of sleep lowers the chance of dizziness while donating.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"title\": \"Rest after donating\",\n      \"body\": \"Sit for 10 to 15 minutes after donating and have a snack before leaving.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"title\": \"One donation saves 3 lives\",\n      \"body\": \"Whole blood can be separated into red cells, platelets and plasma to help three patients.\",\n      \"image\": \"http://help.test/uploads/health_tips/2.png\"\n    },\n    {\n      \"id\": 6,\n      \"title\": \"Respect the waiting period\",\n      \"body\": \"Respecting the waiting period between donations protects your health and your iron stores.\",\n      \"image\": \"http://help.test/uploads/health_tips/3.png\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (ar) · نصيحة اليوم",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}health-tips?today=1",
                          "host": [
                            "{{base_url}}health-tips"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "today",
                              "value": "1",
                              "description": "optional · nullable|boolean · نصيحة اليوم فقط",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 4,\n      \"title\": \"استرح بعد التبرع\",\n      \"body\": \"اجلس ١٠ إلى ١٥ دقيقة بعد التبرع وتناول وجبة خفيفة قبل المغادرة.\",\n      \"image\": \"http://help.test/uploads/health_tips/1.png\"\n    }\n  ]\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `content` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "stats",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"lives_saved\"); pm.expect(o).to.have.property(\"centers\"); pm.expect(o).to.have.property(\"active_donors\"); pm.expect(o).to.have.property(\"successful_donations\"); pm.expect(o).to.have.property(\"units_yearly\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stats",
                          "host": [
                            "{{base_url}}stats"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر أرقام «كن أنت القصة التالية» — أرقام المنصة العامة (الترحيب/نظرة التبرع/شريط الويب).\n\n## Screens\n- U7 Welcome — user app `424:12003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12003&scaling=scale-down&content-scaling=fixed)\n- U7 Welcome — user web `486:4353`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-4353&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user app `424:3791`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3791&scaling=scale-down&content-scaling=fixed)\n- U21 Donation Overview — user web `163:4705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=163-4705&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `825:15895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-15895&scaling=scale-down&content-scaling=fixed)\n- W12 Home web stats strip — user web `2256:5170`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2256-5170&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يقرأ مفاتيح settings: `stats_lives_saved`, `stats_centers`, `stats_active_donors`, `stats_successful_donations`, `stats_units_yearly` (يكتبها الأدمن — brief §10.1).\n2. يرجع الأرقام + نص منسّق بالأرقام العربية/اللاتينية حسب اللغة (`+٤٢٬٠٠٠`).\n3. Cache 10 دقائق (يُمسح عند حفظ الإعدادات).\n\n**Business rules / constraints:**\n- C13: مجموعة واحدة من المفاتيح للترحيب ونظرة التبرع والويب — لا أرقام مختلفة بين الشاشات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | مفتاح غير مضبوط → `value: 0` | `` |  |  |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stats",
                              "host": [
                                "{{base_url}}stats"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+٤٢٬٠٠٠\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+٨٥\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+١٢٬٠٠٠\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+٤٥٬٠٠٠\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+٩٠٬٠٠٠\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — English",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stats",
                              "host": [
                                "{{base_url}}stats"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"lives_saved\": {\n      \"value\": 42000,\n      \"text\": \"+42,000\"\n    },\n    \"centers\": {\n      \"value\": 85,\n      \"text\": \"+85\"\n    },\n    \"active_donors\": {\n      \"value\": 12000,\n      \"text\": \"+12,000\"\n    },\n    \"successful_donations\": {\n      \"value\": 45000,\n      \"text\": \"+45,000\"\n    },\n    \"units_yearly\": {\n      \"value\": 90000,\n      \"text\": \"+90,000\"\n    }\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "stories",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"story cards\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"excerpt\"); } });",
                              "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}stories",
                          "host": [
                            "{{base_url}}stories"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "type",
                              "value": "donor",
                              "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `id` القصة (stories/{id}) — قائمة قصص العطاء بالتبويب.\n\n## Screens\n- U93 Giving Stories (الكل) — user app `765:11751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-11751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-11751&scaling=scale-down&content-scaling=fixed)\n- U93 Giving Stories (الكل) — user web `825:9895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-9895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-9895&scaling=scale-down&content-scaling=fixed)\n- U94 Stories v02 (المتبرعين) — user app `765:12025`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12025&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12025&scaling=scale-down&content-scaling=fixed)\n- U95 Stories v03 (المستفيدين) — user app `765:12384`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12384&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=765-12384&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `type` — optional · nullable|Rule::enum(StoryType::class) · التبويب · example: `donor`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. قصص `is_published=true` مرتبة بـ `published_on` تنازلياً.\n2. `type`: donor (قصص المتبرعين) / beneficiary (المستفيدين) / life_saving (web: قصص إنقاذ الحياة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (type) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stories",
                              "host": [
                                "{{base_url}}stories"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "donor",
                                  "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"ليلى الحربي\",\n        \"published_on\": \"٢١ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"هدية من قلب مجهول\",\n        \"excerpt\": \"تلقيت وحدات دم أنقذت ابني من مضاعفات خطيرة، ولا أعرف أصحابها لأشكرهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"خالد العتيبي\",\n        \"published_on\": \"١٢ أبريل ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"سباق مع الزمن\",\n        \"excerpt\": \"وصلت إلى المستشفى خلال عشرين دقيقة بعد قراءة النداء، وكانت وحدتي أول ما استُخدم.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"فاطمة الزهراني\",\n        \"published_on\": \"٢٧ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"أثر التبرع على عائلتي\",\n        \"excerpt\": \"والدي يحتاج إلى نقل دم شهرياً، ولولا المتبرعين لما استطعنا الاستمرار.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 3,\n        \"author_name\": \"أحمد المطيري\",\n        \"published_on\": \"٢٠ فبراير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"قصة إنقاذ\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"لحظة أنقذنا فيها طفلًا\",\n        \"excerpt\": \"نداء عاجل وصل في منتصف الليل، وخلال ساعتين كان عشرة متبرعين في المستشفى.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 2,\n        \"author_name\": \"سارة الشمري\",\n        \"published_on\": \"٣ فبراير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"مستفيد\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"المتبرعون أنقذوا حياتي\",\n        \"excerpt\": \"احتجت إلى عدة وحدات دم بعد عملية ولادة معقدة، ووجدتها بفضل متبرعين لا أعرفهم.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 1,\n        \"author_name\": \"محمد القحطاني\",\n        \"published_on\": \"١٥ يناير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"تبرع بسيط صنع فرقًا كبيرًا\",\n        \"excerpt\": \"بدأت رحلتي بتبرع واحد في ظهيرة عادية، واليوم أكملت اثني عشر تبرعاً.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stories",
                              "host": [
                                "{{base_url}}stories"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "donor",
                                  "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 8,\n        \"author_name\": \"Layla Al-Harbi\",\n        \"published_on\": \"21 May 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"A gift from an unknown heart\",\n        \"excerpt\": \"I received units that saved my son from serious complications and I do not know the donors to thank them.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 7,\n        \"author_name\": \"Abdullah Al-Shehri\",\n        \"published_on\": \"2 May 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"First donation, finest feeling\",\n        \"excerpt\": \"I was nervous before my first donation, but the center team made it easy and reassuring.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 6,\n        \"author_name\": \"Khaled Al-Otaibi\",\n        \"published_on\": \"12 April 2025\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"Life-saving story\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"A race against time\",\n        \"excerpt\": \"I reached the hospital twenty minutes after reading the appeal and my unit was the first one used.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 5,\n        \"author_name\": \"Fatima Al-Zahrani\",\n        \"published_on\": \"27 March 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"What donation did for my family\",\n        \"excerpt\": \"My father needs monthly transfusions; without donors we could not carry on.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"Noura Al-Otaibi\",\n        \"published_on\": \"8 March 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"Ten years of giving\",\n        \"excerpt\": \"I have donated regularly for ten years and feel the same joy every time.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 3,\n        \"author_name\": \"Ahmed Al-Mutairi\",\n        \"published_on\": \"20 February 2025\",\n        \"type\": {\n          \"value\": \"life_saving\",\n          \"label\": \"Life-saving story\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"title\": \"The moment we saved a child\",\n        \"excerpt\": \"An urgent appeal arrived at midnight and within two hours ten donors were at the hospital.\",\n        \"image\": \"http://help.test/uploads/stories/3.png\"\n      },\n      {\n        \"id\": 2,\n        \"author_name\": \"Sarah Al-Shammari\",\n        \"published_on\": \"3 February 2025\",\n        \"type\": {\n          \"value\": \"beneficiary\",\n          \"label\": \"Beneficiary\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"title\": \"Donors saved my life\",\n        \"excerpt\": \"I needed several units after a complicated delivery and found them thanks to donors I do not know.\",\n        \"image\": \"http://help.test/uploads/stories/2.png\"\n      },\n      {\n        \"id\": 1,\n        \"author_name\": \"Mohammed Al-Qahtani\",\n        \"published_on\": \"15 January 2025\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"Donor\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"A simple donation made a big difference\",\n        \"excerpt\": \"My journey began with one donation on an ordinary afternoon; today I have completed twelve.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 8,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 8\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (ar) · قصص المتبرعين فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stories?type=donor",
                              "host": [
                                "{{base_url}}stories"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "donor",
                                  "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 7,\n        \"author_name\": \"عبدالله الشهري\",\n        \"published_on\": \"٢ مايو ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"أول تبرع وأجمل شعور\",\n        \"excerpt\": \"خفت قبل أول تبرع، لكن فريق المركز جعل التجربة سهلة ومطمئنة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 4,\n        \"author_name\": \"نورة العتيبي\",\n        \"published_on\": \"٨ مارس ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"عشر سنوات من العطاء\",\n        \"excerpt\": \"منذ عشر سنوات وأنا أتبرع بانتظام، وكل مرة أشعر بنفس الفرحة.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      },\n      {\n        \"id\": 1,\n        \"author_name\": \"محمد القحطاني\",\n        \"published_on\": \"١٥ يناير ٢٠٢٥\",\n        \"type\": {\n          \"value\": \"donor\",\n          \"label\": \"متبرع\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"title\": \"تبرع بسيط صنع فرقًا كبيرًا\",\n        \"excerpt\": \"بدأت رحلتي بتبرع واحد في ظهيرة عادية، واليوم أكملت اثني عشر تبرعاً.\",\n        \"image\": \"http://help.test/uploads/stories/1.png\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    }\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (type)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}stories?type=unknown",
                              "host": [
                                "{{base_url}}stories"
                              ],
                              "path": [],
                              "query": [
                                {
                                  "key": "type",
                                  "value": "donor",
                                  "description": "optional · nullable|Rule::enum(StoryType::class) · التبويب",
                                  "disabled": true
                                },
                                {
                                  "key": "page",
                                  "value": "1",
                                  "description": "optional · nullable|integer|min:1 · الصفحة",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد النوع غير صالح.\",\n  \"errors\": {\n    \"type\": [\n      \"حقل المحدد النوع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "assistant",
              "description": "Flow `assistant` — 2 endpoints (sprint 3). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "conversation",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"chat state\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"welcome\"); pm.expect(o).to.have.property(\"hint\"); pm.expect(o).to.have.property(\"messages\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and labels)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}assistant/conversation",
                      "host": [
                        "{{base_url}}assistant"
                      ],
                      "path": [
                        "conversation"
                      ]
                    },
                    "description": "## Purpose\nالمحادثة النشطة مع مساعد أنقذني (الذكاء الاصطناعي) ورسائلها — أو الحالة الفارغة مع نص الترحيب.\n\n## Screens\n- U-ASSIST مساعد أنقذني (شات) — user app `2984:73`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2984-73&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2984-73&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info` · `assistant.enabled`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. لو `settings.ai_enabled=false` → 404 `assistant.disabled` (الواجهة تخفي المساعد).\n2. يرجع أحدث محادثة للمستخدم مع رسائلها (الأقدم أولاً)؛ `conversation_id=null` ورسائل فارغة لو لم يسأل من قبل.\n3. `status`/`welcome`/`hint` نصوص ثابتة من ملفات اللغة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `ai_enabled=false` | `assistant.disabled` | خدمة المساعد غير مفعّلة حالياً. | The assistant service is currently disabled. |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (`complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"status\": \"متصل الآن\",\n    \"welcome\": \"أهلاً بك، اتفضل بالسؤال\",\n    \"hint\": \"اسألني عن شروط التبرع، الإرشادات، فصائل الدم، أو أقرب مركز تبرع.\",\n    \"conversation_id\": 12,\n    \"messages\": [\n      {\n        \"id\": 34,\n        \"role\": {\n          \"value\": \"user\",\n          \"label\": \"المستخدم\"\n        },\n        \"content\": \"كم المدة بين كل تبرع وتبرع؟\",\n        \"time\": \"٩:٤١ ص\",\n        \"created_at\": \"2026-10-26T09:41:00+00:00\"\n      },\n      {\n        \"id\": 35,\n        \"role\": {\n          \"value\": \"assistant\",\n          \"label\": \"المساعد\"\n        },\n        \"content\": \"عادةً يُنصح بترك فترة انتظار بين التبرعات تختلف حسب نوع التبرع؛ راجع إرشادات التبرع في التطبيق أو اسأل بنك الدم للتفاصيل.\",\n        \"time\": \"٩:٤١ ص\",\n        \"created_at\": \"2026-10-26T09:41:02+00:00\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"status\": \"Online now\",\n    \"welcome\": \"Welcome, go ahead and ask.\",\n    \"hint\": \"Ask me about donation conditions, guidelines, blood types, or the nearest donation centre.\",\n    \"conversation_id\": 12,\n    \"messages\": [\n      {\n        \"id\": 34,\n        \"role\": {\n          \"value\": \"user\",\n          \"label\": \"User\"\n        },\n        \"content\": \"How long between donations?\",\n        \"time\": \"9:41 am\",\n        \"created_at\": \"2026-10-26T09:41:00+00:00\"\n      },\n      {\n        \"id\": 35,\n        \"role\": {\n          \"value\": \"assistant\",\n          \"label\": \"Assistant\"\n        },\n        \"content\": \"A waiting period between donations usually applies and depends on the donation type; check the donation guidelines in the app or ask the blood bank for details.\",\n        \"time\": \"9:41 am\",\n        \"created_at\": \"2026-10-26T09:41:02+00:00\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — empty state (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"status\": \"متصل الآن\",\n    \"welcome\": \"أهلاً بك، اتفضل بالسؤال\",\n    \"hint\": \"اسألني عن شروط التبرع، الإرشادات، فصائل الدم، أو أقرب مركز تبرع.\",\n    \"conversation_id\": null,\n    \"messages\": []\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — unauthenticated",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — ai_enabled=false",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"خدمة المساعد غير مفعّلة حالياً.\"\n}"
                    },
                    {
                      "name": "⚠️ 428 — incomplete profile",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — account blocked",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "conversation (new)",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"fresh thread\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"conversation_id\"); pm.expect(o.messages).to.be.an(\"array\").that.is.empty; });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and labels)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    },
                    "url": {
                      "raw": "{{base_url}}assistant/conversation",
                      "host": [
                        "{{base_url}}assistant"
                      ],
                      "path": [
                        "conversation"
                      ]
                    },
                    "description": "## Purpose\n«محادثة جديدة» — يبدأ ثريد فارغ جديد ويجعله النشط (القديم يبقى كأرشيف).\n\n## Screens\n- U-ASSIST مساعد أنقذني (شات) — user app `2984:73`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2984-73&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2984-73&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info` · `assistant.enabled`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. ينشئ `assistant_conversation` جديدة للمستخدم؛ تصبح هي النشطة في `GET conversation`.\n\n**Status / state transitions:** إنشاء ثريد جديد.\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — `api/assistant.new_started` → ar «تم بدء محادثة جديدة» / en \"A new conversation has started\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `ai_enabled=false` | `assistant.disabled` | خدمة المساعد غير مفعّلة حالياً. | The assistant service is currently disabled. |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (`complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم بدء محادثة جديدة\",\n  \"data\": {\n    \"status\": \"متصل الآن\",\n    \"welcome\": \"أهلاً بك، اتفضل بالسؤال\",\n    \"hint\": \"اسألني عن شروط التبرع، الإرشادات، فصائل الدم، أو أقرب مركز تبرع.\",\n    \"conversation_id\": 13,\n    \"messages\": []\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"A new conversation has started\",\n  \"data\": {\n    \"status\": \"Online now\",\n    \"welcome\": \"Welcome, go ahead and ask.\",\n    \"hint\": \"Ask me about donation conditions, guidelines, blood types, or the nearest donation centre.\",\n    \"conversation_id\": 13,\n    \"messages\": []\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — unauthenticated",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — ai_enabled=false",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"خدمة المساعد غير مفعّلة حالياً.\"\n}"
                    },
                    {
                      "name": "⚠️ 428 — incomplete profile",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — account blocked",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/conversation",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "conversation"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "messages",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"reply\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"conversation_id\"); pm.expect(o.reply).to.have.property(\"content\"); pm.expect(o.reply.role.value).to.eql(\"assistant\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and labels)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "message",
                          "value": "كم المدة بين كل تبرع وتبرع؟",
                          "type": "text",
                          "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                        }
                      ]
                    },
                    "url": {
                      "raw": "{{base_url}}assistant/messages",
                      "host": [
                        "{{base_url}}assistant"
                      ],
                      "path": [
                        "messages"
                      ]
                    },
                    "description": "## Purpose\nإرسال رسالة للمساعد والحصول على رده (يُخزَّن الاثنان على الثريد النشط).\n\n## Screens\n- U-ASSIST مساعد أنقذني (شات) — user app `2984:73`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2984-73&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2984-73&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info` · `assistant.enabled` · `throttle:assistant` (20/دقيقة)\n\n## Parameters & fields\n- `message` — **required** · string · حتى 2000 حرف · نص سؤال المستخدم.\n\n## Behaviour notes\n**Steps:**\n1. يُخزَّن سؤال المستخدم على الثريد النشط (يُنشأ ثريد تلقائياً لو لا يوجد).\n2. يُرسَل الثريد كاملاً + البرومبت المعرفي (`settings.assistant_prompt`) للنموذج، ويُخزَّن الرد.\n3. لو النموذج غير متاح → 503 `assistant.unavailable` ويُلغى سؤال المستخدم.\n4. «أقرب مركز» يوجِّه لشاشة المراكز؛ لا تشخيص طبي.\n\n**Status / state transitions:** إضافة رسالتين (user + assistant) وتحديث `last_message_at`.\n\n**Side effects (Laravel-first):**\n- نداء LLM متزامن (Gemini/Claude؛ `fake` في التطوير بلا مفتاح).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — `api/assistant.replied` → ar «تم الرد» / en \"Replied\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | `message` فارغ/أطول من 2000 | `validation` | الحقل الرسالة مطلوب. | The message field is required. |\n| 503 | النموذج غير متاح (مهلة/خطأ) | `assistant.unavailable` | المساعد غير متاح حالياً، برجاء المحاولة لاحقاً. | The assistant is unavailable right now, please try again later. |\n| 404 | `ai_enabled=false` | `assistant.disabled` | خدمة المساعد غير مفعّلة حالياً. | The assistant service is currently disabled. |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (`complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "كم المدة بين كل تبرع وتبرع؟",
                              "type": "text",
                              "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم الرد\",\n  \"data\": {\n    \"conversation_id\": 12,\n    \"reply\": {\n      \"id\": 35,\n      \"role\": {\n        \"value\": \"assistant\",\n        \"label\": \"المساعد\"\n      },\n      \"content\": \"عادةً يُنصح بترك فترة انتظار بين التبرعات تختلف حسب نوع التبرع؛ راجع إرشادات التبرع في التطبيق أو اسأل بنك الدم للتفاصيل.\",\n      \"time\": \"٩:٤١ ص\",\n      \"created_at\": \"2026-10-26T09:41:02+00:00\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "How long between donations?",
                              "type": "text",
                              "description": "required · required|string|max:2000 · the user question"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Replied\",\n  \"data\": {\n    \"conversation_id\": 12,\n    \"reply\": {\n      \"id\": 35,\n      \"role\": {\n        \"value\": \"assistant\",\n        \"label\": \"Assistant\"\n      },\n      \"content\": \"A waiting period between donations usually applies and depends on the donation type; check the donation guidelines in the app or ask the blood bank for details.\",\n      \"time\": \"9:41 am\",\n      \"created_at\": \"2026-10-26T09:41:02+00:00\"\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — validation (empty message)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "",
                              "type": "text",
                              "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل الرسالة مطلوب.\",\n  \"errors\": {\n    \"message\": [\n      \"الحقل الرسالة مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 503 — assistant unavailable",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "كم المدة بين كل تبرع وتبرع؟",
                              "type": "text",
                              "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                            }
                          ]
                        }
                      },
                      "status": "Service Unavailable",
                      "code": 503,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"المساعد غير متاح حالياً، برجاء المحاولة لاحقاً.\"\n}"
                    },
                    {
                      "name": "❌ 401 — unauthenticated",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "كم المدة بين كل تبرع وتبرع؟",
                              "type": "text",
                              "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — ai_enabled=false",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "كم المدة بين كل تبرع وتبرع؟",
                              "type": "text",
                              "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"خدمة المساعد غير مفعّلة حالياً.\"\n}"
                    },
                    {
                      "name": "⚠️ 428 — incomplete profile",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "كم المدة بين كل تبرع وتبرع؟",
                              "type": "text",
                              "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — account blocked",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and labels)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}assistant/messages",
                          "host": [
                            "{{base_url}}assistant"
                          ],
                          "path": [
                            "messages"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "message",
                              "value": "كم المدة بين كل تبرع وتبرع؟",
                              "type": "text",
                              "description": "required · required|string|max:2000 · نص سؤال المستخدم"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                }
              ]
            },
            {
              "name": "complaints",
              "description": "Flow `complaints` — 4 endpoints (sprint 7). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "complaints",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"lean complaint cards (colored status, no buttons)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"status\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"no meta: the tab bar is GET complaints/tabs\", () => pm.expect(pm.response.json().data).to.not.have.property(\"meta\"));",
                          "pm.test(\"one-way: a card has no buttons\", () => { const l = pm.response.json().data.data; if (l.length) pm.expect(l[0]).to.not.have.property(\"action_buttons\"); });",
                          "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"complaint_id\", l[0].id); pm.environment.set(\"complaint_id\", l[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}complaints",
                      "host": [
                        "{{base_url}}complaints"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "status",
                          "value": "replied",
                          "description": "optional · nullable|in:pending,processing,replied,closed · التبويب",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة شكاوى المستخدم مع العدادات.\n\n## Screens\n- U71 Complaints and Suggestions (الكل) — user app `424:6116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6116&scaling=scale-down&content-scaling=fixed)\n- U71 Complaints and Suggestions (الكل) — user web `89:2235`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2235&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2235&scaling=scale-down&content-scaling=fixed)\n- U80 Complaints v02 (تم الرد) — user app `486:3059`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3059&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3059&scaling=scale-down&content-scaling=fixed)\n- U80 Complaints v02 (تم الرد) — user web `89:2522`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2522&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2522&scaling=scale-down&content-scaling=fixed)\n- U81 Complaints v03 (قيد المراجعة) — user app `486:3219`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3219&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3219&scaling=scale-down&content-scaling=fixed)\n- U81 Complaints v03 (قيد المراجعة) — user web `89:2749`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2749&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2749&scaling=scale-down&content-scaling=fixed)\n- U82 Complaints v04 (جديد) — user app `486:3369`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3369&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3369&scaling=scale-down&content-scaling=fixed)\n- U82 Complaints v04 (جديد) — user web `89:2956`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2956&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2956&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Query params\n- `status` — optional · nullable|in:pending,processing,replied,closed · التبويب · example: `replied`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. شكاوى المستخدم (base `complaints` ALTER) الأحدث أولاً؛ `status` فلتر اختياري.\n2. التبويبات والعدّادات **ليست هنا**: لها endpoint مستقل [`GET complaints/tabs`](tabs.md) (مصدر واحد للحقيقة، لا `meta.counts`). الفلتر `status` يقبل الحالات الثلاث فقط: `pending|processing|replied` (لا حالة «مغلقة» للمتبرع).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|in:pending,processing,replied,closed · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 5,\n        \"code\": \"CMP-005\",\n        \"title\": \"خطأ في عرض عدد تبرعاتي\",\n        \"created_at\": \"2026-09-29\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"تم الرد\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"code\": \"CMP-004\",\n        \"title\": \"عدم ظهور موعدي في قائمة المواعيد\",\n        \"created_at\": \"2026-10-18\",\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"جديد\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"code\": \"CMP-003\",\n        \"title\": \"اقتراح إضافة تذكير بالموعد\",\n        \"created_at\": \"2026-10-07\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"تم الرد\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"CMP-002\",\n        \"title\": \"تأخر تأكيد الموعد\",\n        \"created_at\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"processing\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#F57C00\",\n          \"bg_color\": \"#FFF3E0\"\n        }\n      },\n      {\n        \"id\": 1,\n        \"code\": \"CMP-001\",\n        \"title\": \"تعذر تحميل صفحة الحجز\",\n        \"created_at\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"جديد\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 5,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 5\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|in:pending,processing,replied,closed · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 5,\n        \"code\": \"CMP-005\",\n        \"title\": \"خطأ في عرض عدد تبرعاتي\",\n        \"created_at\": \"2026-09-29\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"Replied\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"code\": \"CMP-004\",\n        \"title\": \"عدم ظهور موعدي في قائمة المواعيد\",\n        \"created_at\": \"2026-10-18\",\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"New\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"code\": \"CMP-003\",\n        \"title\": \"اقتراح إضافة تذكير بالموعد\",\n        \"created_at\": \"2026-10-07\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"Replied\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"CMP-002\",\n        \"title\": \"تأخر تأكيد الموعد\",\n        \"created_at\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"processing\",\n          \"label\": \"Under review\",\n          \"color\": \"#F57C00\",\n          \"bg_color\": \"#FFF3E0\"\n        }\n      },\n      {\n        \"id\": 1,\n        \"code\": \"CMP-001\",\n        \"title\": \"تعذر تحميل صفحة الحجز\",\n        \"created_at\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"New\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 5,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 5\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints?status=bogus",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|in:pending,processing,replied,closed · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"القيمة المحددة في الحالة غير صالحة.\",\n  \"errors\": {\n    \"status\": [\n      \"القيمة المحددة في الحالة غير صالحة.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|in:pending,processing,replied,closed · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|in:pending,processing,replied,closed · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|in:pending,processing,replied,closed · التبويب",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "complaint-tabs",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"four tabs in order: all, pending, processing, replied (no closed)\", () => { const t = pm.response.json().data; pm.expect(t.map((x) => x.value)).to.eql([\"all\", \"pending\", \"processing\", \"replied\"]); });",
                          "pm.test(\"each tab is render-ready: label, colours, count\", () => pm.response.json().data.forEach((x) => { [\"value\", \"label\", \"color\", \"bg_color\", \"count\"].forEach((k) => pm.expect(x).to.have.property(k)); pm.expect(x.count).to.be.a(\"number\"); }));",
                          "pm.test(\"all counts every complaint, the status tabs are a subset\", () => { const t = pm.response.json().data; pm.expect(t[0].count).to.be.at.least(t[1].count + t[2].count + t[3].count); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}complaints/tabs",
                      "host": [
                        "{{base_url}}complaints"
                      ],
                      "path": [
                        "tabs"
                      ]
                    },
                    "description": "## Purpose\nتبويبات الشكاوى مع الألوان والعدّادات (الكل · جديد · قيد المراجعة · تم الرد).\n\n## Screens\n- U71 Complaints and Suggestions (الكل) — user app `424:6116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6116&scaling=scale-down&content-scaling=fixed)\n- U71 Complaints and Suggestions (الكل) — user web `89:2235`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2235&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2235&scaling=scale-down&content-scaling=fixed)\n- U80 Complaints v02 (تم الرد) — user app `486:3059`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3059&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3059&scaling=scale-down&content-scaling=fixed)\n- U80 Complaints v02 (تم الرد) — user web `89:2522`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2522&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2522&scaling=scale-down&content-scaling=fixed)\n- U81 Complaints v03 (قيد المراجعة) — user app `486:3219`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3219&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3219&scaling=scale-down&content-scaling=fixed)\n- U81 Complaints v03 (قيد المراجعة) — user web `89:2749`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2749&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2749&scaling=scale-down&content-scaling=fixed)\n- U82 Complaints v04 (جديد) — user app `486:3369`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3369&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-3369&scaling=scale-down&content-scaling=fixed)\n- U82 Complaints v04 (جديد) — user web `89:2956`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2956&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-2956&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. The tab bar on top of «الشكاوى والمقترحات» is rendered **straight from this response** - the client hardcodes no label, order or colour (delivery-standards §2).\n2. Four entries in a fixed order: `all` (الكل - no enum value, modelled as `value: \"all\"`, neutral colours) then the **three donor statuses only**: `pending` جديد · `processing` قيد المراجعة · `replied` تم الرد (colours + labels from `ComplaintStatus::toValueLabel()`, ar + en from `lang/*/admin/complaints.php` / `api/complaint.php`).\n3. `count` = the current donor's own complaints: `all` = every complaint of the donor, each status tab = those in that status. There is no «closed» tab and no closed status for the donor (legacy `closed` / `completed` / `rejected` rows count only in `all`).\n4. Tapping a tab calls `GET complaints?status=<value>` (omit `status` for `all`).\n\n**Why a dedicated endpoint (and no `meta.counts` on the list):** the developer asked for a standalone tabs API. One source of truth - the list response carries only `data` + `pagination`; the app calls `complaints/tabs` once when the screen opens and re-calls it after sending a complaint (the counts change) while paging/filtering the list never needs it again.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` - message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/tabs",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "tabs"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"all\",\n      \"label\": \"الكل\",\n      \"color\": \"#374151\",\n      \"bg_color\": \"#F3F4F6\",\n      \"count\": 5\n    },\n    {\n      \"value\": \"pending\",\n      \"label\": \"جديد\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\",\n      \"count\": 2\n    },\n    {\n      \"value\": \"processing\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#F57C00\",\n      \"bg_color\": \"#FFF3E0\",\n      \"count\": 1\n    },\n    {\n      \"value\": \"replied\",\n      \"label\": \"تم الرد\",\n      \"color\": \"#2E7D32\",\n      \"bg_color\": \"#E8F5E9\",\n      \"count\": 2\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/tabs",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "tabs"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"all\",\n      \"label\": \"All\",\n      \"color\": \"#374151\",\n      \"bg_color\": \"#F3F4F6\",\n      \"count\": 5\n    },\n    {\n      \"value\": \"pending\",\n      \"label\": \"New\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\",\n      \"count\": 2\n    },\n    {\n      \"value\": \"processing\",\n      \"label\": \"Under review\",\n      \"color\": \"#F57C00\",\n      \"bg_color\": \"#FFF3E0\",\n      \"count\": 1\n    },\n    {\n      \"value\": \"replied\",\n      \"label\": \"Replied\",\n      \"color\": \"#2E7D32\",\n      \"bg_color\": \"#E8F5E9\",\n      \"count\": 2\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/tabs",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "tabs"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/tabs",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "tabs"
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/tabs",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "tabs"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "create-complaint",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"sent complaint\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"category\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"official_reply\"); pm.expect(o).to.have.property(\"timeline\"); });",
                          "pm.test(\"starts new with its first timeline row and a CMP- code\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"pending\"); pm.expect(d.code).to.match(/^CMP-[0-9]+$/); pm.expect(d.official_reply).to.eql(null); pm.expect(d.timeline).to.have.length(3); pm.expect(d.timeline.map((r) => r.state.value)).to.eql([\"current\", \"pending\", \"pending\"]); });",
                          "{ const id = pm.response.json().data.id; if (id) { pm.collectionVariables.set(\"complaint_id\", id); pm.environment.set(\"complaint_id\", id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}complaints",
                      "host": [
                        "{{base_url}}complaints"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nإرسال شكوى/اقتراح للإدارة.\n\n## Screens\n- U72 Submit Complaint — user app `424:6271`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6271&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6271&scaling=scale-down&content-scaling=fixed)\n- U72 Submit Complaint — user web `89:3183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3183&scaling=scale-down&content-scaling=fixed)\n- U85 Select Feedback Category — user app `1488:2885`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2885&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2885&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n- Rate limit: `throttle:complaints` (5/hour)\n\n## Parameters & fields\n### Body (form-data)\n- `title` — required · required|string|max:150 · العنوان · example: `تأخر تأكيد الموعد`\n- `category` — required · required|Rule::enum(ComplaintCategory::class) · التصنيف · source: GET {{base_url}}lookups/complaint-categories · example: `service`\n- `description` — required · required|string|max:500 · الوصف (≤500) · example: `لم يتم تأكيد موعدي إلا قبل ساعة من الموعد`\n\n\n## Behaviour notes\n**Steps:**\n1. ينشئ `complaints` (base): `subject`=title, `complaint`=description, `category`, `status=pending`, `code` CMP- (Observer — C12)، `complaiantable`=User.\n2. أول صف في `complaint_status_logs` (pending «تم استلام الشكوى»).\n\n**Status / state transitions:** `ComplaintStatus`: — → `pending`.\n\n**Side effects (Laravel-first):**\n- Event `ComplaintCreated` → admin database notification.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_complaint_created` | الأدمن | شكوى جديدة | :code — :title | complaint_id | admin complaints.show |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/complaint.created` → ar «تم إرسال الشكوى بنجاح» / en \"Complaint sent\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (title, category, description) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n| 429 | تجاوز 5 شكاوى/ساعة (`throttle:complaints`) | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "title",
                          "value": "تأخر تأكيد الموعد",
                          "type": "text",
                          "description": "required · required|string|max:150 · العنوان"
                        },
                        {
                          "key": "category",
                          "value": "service",
                          "type": "text",
                          "description": "required · required|Rule::enum(ComplaintCategory::class) · التصنيف · source: GET {{base_url}}lookups/complaint-categories"
                        },
                        {
                          "key": "description",
                          "value": "لم يتم تأكيد موعدي إلا قبل ساعة من الموعد",
                          "type": "text",
                          "description": "required · required|string|max:500 · الوصف (≤500)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "title",
                              "value": "تأخر تأكيد الموعد",
                              "type": "text"
                            },
                            {
                              "key": "category",
                              "value": "service",
                              "type": "text"
                            },
                            {
                              "key": "description",
                              "value": "لم يتم تأكيد موعدي إلا قبل ساعة من الموعد",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال الشكوى بنجاح\",\n  \"data\": {\n    \"id\": 9,\n    \"code\": \"CMP-009\",\n    \"title\": \"تأخر تأكيد الموعد\",\n    \"created_at\": \"2026-10-19\",\n    \"status\": {\n      \"value\": \"pending\",\n      \"label\": \"جديد\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"category\": {\n      \"value\": \"service\",\n      \"label\": \"شكوى خدمة\"\n    },\n    \"description\": \"لم يتم تأكيد موعدي إلا قبل ساعة من الموعد\",\n    \"official_reply\": null,\n    \"timeline\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"جديد\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"title\": \"تم استلام الشكوى\",\n        \"note\": null,\n        \"at\": \"2026-10-19 2:54 م\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"قيد التنفيذ\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"processing\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#F57C00\",\n          \"bg_color\": \"#FFF3E0\"\n        },\n        \"title\": \"قيد المراجعة\",\n        \"note\": null,\n        \"at\": null,\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"تم الرد\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        },\n        \"title\": \"تم الرد\",\n        \"note\": null,\n        \"at\": null,\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "title",
                              "value": "تأخر تأكيد الموعد",
                              "type": "text"
                            },
                            {
                              "key": "category",
                              "value": "service",
                              "type": "text"
                            },
                            {
                              "key": "description",
                              "value": "لم يتم تأكيد موعدي إلا قبل ساعة من الموعد",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Complaint sent\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"CMP-010\",\n    \"title\": \"تأخر تأكيد الموعد\",\n    \"created_at\": \"2026-10-19\",\n    \"status\": {\n      \"value\": \"pending\",\n      \"label\": \"New\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"category\": {\n      \"value\": \"service\",\n      \"label\": \"Service complaint\"\n    },\n    \"description\": \"لم يتم تأكيد موعدي إلا قبل ساعة من الموعد\",\n    \"official_reply\": null,\n    \"timeline\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"New\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"title\": \"Complaint received\",\n        \"note\": null,\n        \"at\": \"2026-10-19 2:54 PM\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"In progress\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"processing\",\n          \"label\": \"Under review\",\n          \"color\": \"#F57C00\",\n          \"bg_color\": \"#FFF3E0\"\n        },\n        \"title\": \"Under review\",\n        \"note\": null,\n        \"at\": null,\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"Replied\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        },\n        \"title\": \"Replied\",\n        \"note\": null,\n        \"at\": null,\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (title, category, description)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل العنوان مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"title\": [\n      \"الحقل العنوان مطلوب.\"\n    ],\n    \"category\": [\n      \"الحقل التصنيف مطلوب.\"\n    ],\n    \"description\": [\n      \"الحقل الوصف مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "title",
                              "value": "تأخر تأكيد الموعد",
                              "type": "text"
                            },
                            {
                              "key": "category",
                              "value": "service",
                              "type": "text"
                            },
                            {
                              "key": "description",
                              "value": "لم يتم تأكيد موعدي إلا قبل ساعة من الموعد",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    },
                    {
                      "name": "❌ 429 — تجاوز 5 شكاوى/ساعة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "title",
                              "value": "تأخر تأكيد الموعد",
                              "type": "text"
                            },
                            {
                              "key": "category",
                              "value": "service",
                              "type": "text"
                            },
                            {
                              "key": "description",
                              "value": "لم يتم تأكيد موعدي إلا قبل ساعة من الموعد",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 3599\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "complaint-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"complaint details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"category\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"official_reply\"); pm.expect(o).to.have.property(\"timeline\"); });",
                          "pm.test(\"the timeline is always the 3-stage track with a state each\", () => { const t = pm.response.json().data.timeline; pm.expect(t.map((r) => r.status.value)).to.eql([\"pending\", \"processing\", \"replied\"]); t.forEach((r) => { [\"status\", \"title\", \"note\", \"at\", \"state\"].forEach((k) => pm.expect(r).to.have.property(k)); pm.expect([\"pending\", \"current\", \"done\"]).to.include(r.state.value); }); });",
                          "pm.test(\"one-way: no buttons\", () => pm.expect(pm.response.json().data).to.not.have.property(\"action_buttons\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}complaints/{id}",
                      "host": [
                        "{{base_url}}complaints"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{complaint_id}}",
                          "description": "required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل الشكوى وسير المعاملة والرد الرسمي.\n\n## Screens\n- U74 Complaint Details / Replied (CMP-005) — user app `424:11565`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11565&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-11565&scaling=scale-down&content-scaling=fixed)\n- U74 Complaint Details / Replied (CMP-005) — user web `89:4212`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4212&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4212&scaling=scale-down&content-scaling=fixed)\n- U76 New (CMP-004) — user app `486:2476`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2476&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2476&scaling=scale-down&content-scaling=fixed)\n- U76 New (CMP-004) — user web `89:4027`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4027&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-4027&scaling=scale-down&content-scaling=fixed)\n- U77 Replied v02 (CMP-003) — user app `486:2538`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2538&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2538&scaling=scale-down&content-scaling=fixed)\n- U77 Replied v02 (CMP-003) — user web `89:3798`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3798&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3798&scaling=scale-down&content-scaling=fixed)\n- U78 Under Review (CMP-002) — user app `486:2701`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2701&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2701&scaling=scale-down&content-scaling=fixed)\n- U78 Under Review (CMP-002) — user web `89:3576`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3576&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3576&scaling=scale-down&content-scaling=fixed)\n- U79 New / CMP-001 — user app `486:2896`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2896&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-2896&scaling=scale-down&content-scaling=fixed)\n- U79 New / CMP-001 — user web `89:3371`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3371&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3371&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User)\n- Middleware: `api.lang` · `auth:sanctum` · `donor` · `complete.info`\n\n## Parameters & fields\n### Path params\n- `id` — required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints · example: `5`\n\n\n## Behaviour notes\n**Steps:**\n1. `ComplaintResource`: التاريخ، الحالة، الكود، العنوان، الوصف، `official_reply` (آخر رد أدمن من base `replays` + تاريخه)، `timeline[]` = **المسار الكامل دائماً (3 مراحل فقط)**: استلام (`pending`) ← قيد المراجعة (`processing`) ← تم الرد (`replied`)، كل مرحلة بـ `state` من `StageState` نفسه المستخدم في تتبّع التبرع (`pending|current|done`). الملاحظة والوقت من صف `complaint_status_logs` الفعلي وتكونان `null` للمراحل القادمة. شكوى جديدة = مرحلة `current` واحدة + مرحلتان `pending`؛ `replied` = الثلاث `done`. لا مرحلة «مغلقة»: الحالات القديمة (`closed`/`completed`/`rejected`) لا تظهر للمتبرع وتُعرض كنهاية المسار (الثلاث `done`).\n2. المستخدم لا يرد (اتجاه واحد) — لا أزرار.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | شكوى لغير المالك | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 428 | بيانات الحساب ناقصة (middleware `complete.info`) → `data.next_step` | `auth.incomplete_profile` | يرجى استكمال بيانات حسابك | Please complete your account details |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/{id}",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{complaint_id}}",
                              "description": "required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 5,\n    \"code\": \"CMP-005\",\n    \"title\": \"خطأ في عرض عدد تبرعاتي\",\n    \"created_at\": \"2026-09-29\",\n    \"status\": {\n      \"value\": \"replied\",\n      \"label\": \"تم الرد\",\n      \"color\": \"#2E7D32\",\n      \"bg_color\": \"#E8F5E9\"\n    },\n    \"category\": {\n      \"value\": \"technical\",\n      \"label\": \"مشكلة تقنية\"\n    },\n    \"description\": \"عدد التبرعات المكتملة في الملف الشخصي لا يطابق السجل الموجود في سجل التبرعات.\",\n    \"official_reply\": {\n      \"body\": \"تم فحص حسابكم وتصحيح عداد التبرعات ليطابق سجل التبرعات. نعتذر عن الإزعاج ونشكركم على تواصلكم.\",\n      \"replied_at\": \"2026-10-01\"\n    },\n    \"timeline\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"جديد\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"title\": \"تم استلام الشكوى\",\n        \"note\": null,\n        \"at\": \"2026-09-29 8:43 ص\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"processing\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#F57C00\",\n          \"bg_color\": \"#FFF3E0\"\n        },\n        \"title\": \"قيد المراجعة\",\n        \"note\": \"جارٍ فحص بيانات التبرعات المسجلة في حسابكم\",\n        \"at\": \"2026-09-30 11:43 م\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"تم الرد\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        },\n        \"title\": \"تم الرد\",\n        \"note\": \"تم تصحيح العداد وتحديث بياناتكم\",\n        \"at\": \"2026-10-01 1:43 ص\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/{id}",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{complaint_id}}",
                              "description": "required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 2,\n    \"code\": \"CMP-002\",\n    \"title\": \"تأخر تأكيد الموعد\",\n    \"created_at\": \"2026-10-14\",\n    \"status\": {\n      \"value\": \"processing\",\n      \"label\": \"Under review\",\n      \"color\": \"#F57C00\",\n      \"bg_color\": \"#FFF3E0\"\n    },\n    \"category\": {\n      \"value\": \"service\",\n      \"label\": \"Service complaint\"\n    },\n    \"description\": \"مر أكثر من يوم على طلب الحجز ولم يصلني تأكيد من المركز.\",\n    \"official_reply\": null,\n    \"timeline\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"New\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"title\": \"Complaint received\",\n        \"note\": null,\n        \"at\": \"2026-10-14 8:58 AM\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"processing\",\n          \"label\": \"Under review\",\n          \"color\": \"#F57C00\",\n          \"bg_color\": \"#FFF3E0\"\n        },\n        \"title\": \"Under review\",\n        \"note\": \"جارٍ مراجعة الشكوى من فريق الدعم والتواصل مع المركز\",\n        \"at\": \"2026-10-15 7:58 PM\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"In progress\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        }\n      },\n      {\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"Replied\",\n          \"color\": \"#2E7D32\",\n          \"bg_color\": \"#E8F5E9\"\n        },\n        \"title\": \"Replied\",\n        \"note\": null,\n        \"at\": null,\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — شكوى لغير المالك",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/{id}",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{complaint_id}}",
                              "description": "required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/{id}",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{complaint_id}}",
                              "description": "required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 428 — بيانات الحساب ناقصة (middleware complete.info) → data.next_step",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/{id}",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{complaint_id}}",
                              "description": "required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints"
                            }
                          ]
                        }
                      },
                      "status": "Precondition Required",
                      "code": 428,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى استكمال بيانات حسابك\",\n  \"key\": \"incomplete_profile\",\n  \"data\": {\n    \"next_step\": \"complete_info\"\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}complaints/{id}",
                          "host": [
                            "{{base_url}}complaints"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{complaint_id}}",
                              "description": "required · complaint owned by user · الشكوى · source: GET {{base_url}}complaints"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `complaints` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/complaint-categories",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/complaint-categories",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "complaint-categories"
                          ]
                        },
                        "description": "## Purpose\nمصدر `category` (تصنيف الشكوى) — قائمة تصنيفات الشكاوى — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U85 Select Feedback Category (sheet) — user app `1488:2885`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2885&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2885&scaling=scale-down&content-scaling=fixed)\n- U72 Submit Complaint — user app `424:6271`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6271&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-6271&scaling=scale-down&content-scaling=fixed)\n- U72 Submit Complaint — user web `89:3183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=89-3183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\ComplaintCategory` بالترتيب المعرّف في الـ enum عبر `ComplaintCategory::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/complaint-categories",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "complaint-categories"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"technical\",\n      \"label\": \"مشكلة تقنية\"\n    },\n    {\n      \"value\": \"improvement\",\n      \"label\": \"اقتراح تحسين\"\n    },\n    {\n      \"value\": \"service\",\n      \"label\": \"شكوى خدمة\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/complaints",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "complaints",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الشكاوى على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: complaints (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"complaints\": 0\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "Settings",
          "item": [
            {
              "name": "devices",
              "description": "Flow `devices` — 3 endpoints (sprint 1). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "store-device",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"device_id\"); pm.expect(o).to.have.property(\"device_type\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_used_at\"); });",
                          "{ const v = pm.response.json().data.device_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"device_id\", v); pm.environment.set(\"device_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}devices",
                      "host": [
                        "{{base_url}}devices"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nتسجيل/تحديث جهاز FCM (Firebase FCM).\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Body (form-data)\n- `device_id` — required · required|string|max:191 · معرّف ثابت للجهاز (UUID من التطبيق/المتصفح) · example: `a1b2c3d4-iphone15`\n- `device_type` — required · required|Rule::enum(DeviceType::class) android,ios,web · نوع الجهاز · example: `ios`\n- `fcm_token` — required · required|string|max:4096 · توكن Firebase · example: `fcm-token-…`\n- `lang` — optional · nullable|Rule::enum(Lang::class) · لغة الجهاز (افتراضي `users.lang`) · example: `ar`\n\n\n## Behaviour notes\n**Steps:**\n1. `updateOrCreate` على (`userable`, `device_id`) — نفس الجهاز لا يتكرر؛ نفس `fcm_token` على مستخدم آخر يُنقل لهذا (`where fcm_token` delete).\n2. يحدّث `last_used_at`.\n3. web = Firebase web push (نفس الجدول).\n\n**Business rules / constraints:**\n- نفس endpoints للموظف تحت `provider/devices` (نفس الخدمة، morph `userable`).\n- التوكنات الميتة تُحذف تلقائياً عند فشل FCM (`RemoveInvalidFcmToken` listener على `NotificationFailed`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none (pure persistence).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.saved` → ar «تم حفظ الجهاز» / en \"Device saved\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (device_id, device_type, fcm_token, lang) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "device_id",
                          "value": "a1b2c3d4-iphone15",
                          "type": "text",
                          "description": "required · required|string|max:191 · معرّف ثابت للجهاز (UUID من التطبيق/المتصفح)"
                        },
                        {
                          "key": "device_type",
                          "value": "ios",
                          "type": "text",
                          "description": "required · required|Rule::enum(DeviceType::class) android,ios,web · نوع الجهاز"
                        },
                        {
                          "key": "fcm_token",
                          "value": "fcm-token-0001",
                          "type": "text",
                          "description": "required · required|string|max:4096 · توكن Firebase"
                        },
                        {
                          "key": "lang",
                          "value": "ar",
                          "type": "text",
                          "description": "optional · nullable|Rule::enum(Lang::class) · لغة الجهاز (افتراضي `users.lang`)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — registered",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "a1b2c3d4-iphone15",
                              "type": "text"
                            },
                            {
                              "key": "device_type",
                              "value": "ios",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-token-0001",
                              "type": "text"
                            },
                            {
                              "key": "lang",
                              "value": "ar",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ الجهاز\",\n  \"data\": {\n    \"device_id\": \"a1b2c3d4-iphone15\",\n    \"device_type\": {\n      \"value\": \"ios\",\n      \"label\": \"iOS\"\n    },\n    \"lang\": \"ar\",\n    \"last_used_at\": \"2026-10-18T07:23:06+00:00\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — empty body",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل معرّف الجهاز مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"device_id\": [\n      \"الحقل معرّف الجهاز مطلوب.\"\n    ],\n    \"device_type\": [\n      \"الحقل نوع الجهاز مطلوب.\"\n    ],\n    \"fcm_token\": [\n      \"الحقل توكن الجهاز مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "a1b2c3d4-iphone15",
                              "type": "text"
                            },
                            {
                              "key": "device_type",
                              "value": "ios",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-token-0001",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": []
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "a1b2c3d4-iphone15",
                              "type": "text"
                            },
                            {
                              "key": "device_type",
                              "value": "ios",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-token-0001",
                              "type": "text"
                            },
                            {
                              "key": "lang",
                              "value": "ar",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "update-device",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"device_id\"); pm.expect(o).to.have.property(\"device_type\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_used_at\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}devices/{id}",
                      "host": [
                        "{{base_url}}devices"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{device_id}}",
                          "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                        }
                      ]
                    },
                    "description": "## Purpose\nتحديث توكن جهاز (Firebase FCM).\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Path params\n- `id` — required · device_id المملوك · device_id · source: POST {{base_url}}devices · example: `a1b2c3d4-iphone15`\n\n### Body (form-data)\n- `fcm_token` — required · required|string|max:4096 · التوكن الجديد (onTokenRefresh) · example: `fcm-token-new…`\n- `lang` — optional · nullable|Rule::enum(Lang::class) · اللغة · example: `en`\n\n\n## Behaviour notes\n**Steps:**\n1. يحدّث صف الجهاز المملوك للمستخدم (`{id}` = `device_id`).\n2. جهاز غير موجود لهذا المستخدم → 404.\n\n**Business rules / constraints:**\n- نفس endpoints للموظف تحت `provider/devices` (نفس الخدمة، morph `userable`).\n- التوكنات الميتة تُحذف تلقائياً عند فشل FCM (`RemoveInvalidFcmToken` listener على `NotificationFailed`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none (pure persistence).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.saved` → ar «تم حفظ الجهاز» / en \"Device saved\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (fcm_token, lang) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 404 | device_id غير مسجّل لهذا المستخدم | `messages.not_found` | العنصر غير موجود | Not found |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n\n> الـ route هو `PUT {{base_url}}devices/{id}`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "fcm_token",
                          "value": "fcm-token-0002",
                          "type": "text",
                          "description": "required · required|string|max:4096 · التوكن الجديد (onTokenRefresh)"
                        },
                        {
                          "key": "lang",
                          "value": "en",
                          "type": "text",
                          "description": "optional · nullable|Rule::enum(Lang::class) · اللغة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — token refreshed",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-token-0002",
                              "type": "text"
                            },
                            {
                              "key": "lang",
                              "value": "en",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ الجهاز\",\n  \"data\": {\n    \"device_id\": \"a1b2c3d4-iphone15\",\n    \"device_type\": {\n      \"value\": \"ios\",\n      \"label\": \"iOS\"\n    },\n    \"lang\": \"en\",\n    \"last_used_at\": \"2026-10-18T07:23:06+00:00\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — empty body",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل توكن الجهاز مطلوب.\",\n  \"errors\": {\n    \"fcm_token\": [\n      \"الحقل توكن الجهاز مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — device not registered for this donor",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-token-0002",
                              "type": "text"
                            },
                            {
                              "key": "lang",
                              "value": "en",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "delete-device",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}devices/{id}",
                      "host": [
                        "{{base_url}}devices"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{device_id}}",
                          "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                        }
                      ]
                    },
                    "description": "## Purpose\nحذف جهاز (Firebase FCM).\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Path params\n- `id` — required · device_id المملوك · device_id · source: POST {{base_url}}devices · example: `a1b2c3d4-iphone15`\n\n\n## Behaviour notes\n**Steps:**\n1. يحذف صف الجهاز (`{id}` = `device_id`) — يستخدم عند إيقاف الإشعارات على مستوى النظام أو تبديل الحساب.\n\n**Business rules / constraints:**\n- نفس endpoints للموظف تحت `provider/devices` (نفس الخدمة، morph `userable`).\n- التوكنات الميتة تُحذف تلقائياً عند فشل FCM (`RemoveInvalidFcmToken` listener على `NotificationFailed`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none (pure persistence).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.deleted` → ar «تم حذف الجهاز» / en \"Device removed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 404 | device_id غير مسجّل لهذا المستخدم | `messages.not_found` | العنصر غير موجود | Not found |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — removed",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الجهاز\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — device not registered for this donor",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices/{id}",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id المملوك · device_id · source: POST {{base_url}}devices"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `devices` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "devices",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"device_id\"); pm.expect(o).to.have.property(\"device_type\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_used_at\"); });",
                              "{ const v = pm.response.json().data.device_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"device_id\", v); pm.environment.set(\"device_id\", v); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}devices",
                          "host": [
                            "{{base_url}}devices"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `device_id` (يُحفظ تلقائياً في `{{device_id}}`) — تسجيل/تحديث جهاز FCM (Firebase FCM).\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Body (form-data)\n- `device_id` — required · required|string|max:191 · معرّف ثابت للجهاز (UUID من التطبيق/المتصفح) · example: `a1b2c3d4-iphone15`\n- `device_type` — required · required|Rule::enum(DeviceType::class) android,ios,web · نوع الجهاز · example: `ios`\n- `fcm_token` — required · required|string|max:4096 · توكن Firebase · example: `fcm-token-…`\n- `lang` — optional · nullable|Rule::enum(Lang::class) · لغة الجهاز (افتراضي `users.lang`) · example: `ar`\n\n\n## Behaviour notes\n**Steps:**\n1. `updateOrCreate` على (`userable`, `device_id`) — نفس الجهاز لا يتكرر؛ نفس `fcm_token` على مستخدم آخر يُنقل لهذا (`where fcm_token` delete).\n2. يحدّث `last_used_at`.\n3. web = Firebase web push (نفس الجدول).\n\n**Business rules / constraints:**\n- نفس endpoints للموظف تحت `provider/devices` (نفس الخدمة، morph `userable`).\n- التوكنات الميتة تُحذف تلقائياً عند فشل FCM (`RemoveInvalidFcmToken` listener على `NotificationFailed`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none (pure persistence).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.saved` → ar «تم حفظ الجهاز» / en \"Device saved\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (device_id, device_type, fcm_token, lang) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "a1b2c3d4-iphone15",
                              "type": "text",
                              "description": "required · required|string|max:191 · معرّف ثابت للجهاز (UUID من التطبيق/المتصفح)"
                            },
                            {
                              "key": "device_type",
                              "value": "ios",
                              "type": "text",
                              "description": "required · required|Rule::enum(DeviceType::class) android,ios,web · نوع الجهاز"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-token-0001",
                              "type": "text",
                              "description": "required · required|string|max:4096 · توكن Firebase"
                            },
                            {
                              "key": "lang",
                              "value": "ar",
                              "type": "text",
                              "description": "optional · nullable|Rule::enum(Lang::class) · لغة الجهاز (افتراضي `users.lang`)"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — registered",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}devices",
                              "host": [
                                "{{base_url}}devices"
                              ],
                              "path": []
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "device_id",
                                  "value": "a1b2c3d4-iphone15",
                                  "type": "text"
                                },
                                {
                                  "key": "device_type",
                                  "value": "ios",
                                  "type": "text"
                                },
                                {
                                  "key": "fcm_token",
                                  "value": "fcm-token-0001",
                                  "type": "text"
                                },
                                {
                                  "key": "lang",
                                  "value": "ar",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم حفظ الجهاز\",\n  \"data\": {\n    \"device_id\": \"a1b2c3d4-iphone15\",\n    \"device_type\": {\n      \"value\": \"ios\",\n      \"label\": \"iOS\"\n    },\n    \"lang\": \"ar\",\n    \"last_used_at\": \"2026-10-18T07:23:06+00:00\"\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — empty body",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}devices",
                              "host": [
                                "{{base_url}}devices"
                              ],
                              "path": []
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": []
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل معرّف الجهاز مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"device_id\": [\n      \"الحقل معرّف الجهاز مطلوب.\"\n    ],\n    \"device_type\": [\n      \"الحقل نوع الجهاز مطلوب.\"\n    ],\n    \"fcm_token\": [\n      \"الحقل توكن الجهاز مطلوب.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — no token",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}devices",
                              "host": [
                                "{{base_url}}devices"
                              ],
                              "path": []
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "device_id",
                                  "value": "a1b2c3d4-iphone15",
                                  "type": "text"
                                },
                                {
                                  "key": "device_type",
                                  "value": "ios",
                                  "type": "text"
                                },
                                {
                                  "key": "fcm_token",
                                  "value": "fcm-token-0001",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}devices",
                              "host": [
                                "{{base_url}}devices"
                              ],
                              "path": []
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "device_id",
                                  "value": "a1b2c3d4-iphone15",
                                  "type": "text"
                                },
                                {
                                  "key": "device_type",
                                  "value": "ios",
                                  "type": "text"
                                },
                                {
                                  "key": "fcm_token",
                                  "value": "fcm-token-0001",
                                  "type": "text"
                                },
                                {
                                  "key": "lang",
                                  "value": "ar",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "notifications",
              "description": "Flow `notifications` — 6 endpoints (sprint 1). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "notifications",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"user_token\") }; pm.sendRequest({ url: base + \"notifications\", method: \"GET\", header: h }, (e, r) => { if (e || r.code !== 200 || r.json().data.data.length) return; pm.sendRequest({ url: base + \"demo/user/fill/notifications\", method: \"POST\", header: h }, () => {}); });",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"rows\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"body\"); pm.expect(o).to.have.property(\"extra_line\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"screen\"); pm.expect(o).to.have.property(\"ids\"); pm.expect(o).to.have.property(\"is_read\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"group\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "{ const items = pm.response.json().data.data; pm.test(\"pagination + meta\", () => { pm.expect(pm.response.json().data).to.have.property(\"pagination\"); pm.expect(pm.response.json().data.meta).to.have.property(\"unread_count\"); }); if (items.length) { pm.collectionVariables.set(\"notification_id\", items[0].id); pm.environment.set(\"notification_id\", items[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}notifications",
                      "host": [
                        "{{base_url}}notifications"
                      ],
                      "path": [],
                      "query": [
                        {
                          "key": "unread",
                          "value": "0",
                          "description": "optional · nullable|boolean · غير المقروءة فقط",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة الإشعارات (المستخدم).\n\n## Screens\n- U67 Notifications — user app `424:3327`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&scaling=scale-down&content-scaling=fixed)\n- U67 Notifications — user web `86:7430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&scaling=scale-down&content-scaling=fixed)\n- U68 Notifications v02 (all read) — user app `424:7145`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&scaling=scale-down&content-scaling=fixed)\n- G-U05 حذف إشعار / حذف الكل (gap U-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- W7 Header badge (web) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Query params\n- `unread` — optional · nullable|boolean · غير المقروءة فقط · example: `0`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع إشعارات الحساب (`database` channel) الأحدث أولاً، مقسمة لصفحات.\n2. `unread=1` → غير المقروءة فقط (تبويب «غير المقروءة»).\n3. كل عنصر: `title`/`body` **بلغة الطلب** من `data.title[lang]` (المخزّن ar+en)، `type{value,label}`, `extra_line` (المستشفى/الموعد/رقم الوحدة)، `blood_type` شارة، `screen` + ids للتنقل، `is_read`, `created_at`, `group` (`today|yesterday|earlier` — محسوب للتجميع).\n4. `meta`: `unread_count`, `total`.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (24 نوعاً للمستخدم — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: the folder ends on `delete-all-notifications`, which empties the inbox - the pre-request calls `POST demo/user/fill/notifications` when the list is empty (needs `DEMO_DATA_ENABLED=true`), so `read-notification` / `delete-notification` always find a notification on the next run.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — main donor (3 unread)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": \"e02cf37e-816c-4269-a723-f218b59262f3\",\n        \"type\": {\n          \"value\": \"broadcast\",\n          \"label\": \"إشعار من الإدارة\"\n        },\n        \"title\": \"إشعار من الإدارة\",\n        \"body\": \"تبرعك القادم قد ينقذ حياة، احجز موعدك اليوم\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"notifications\",\n        \"ids\": {\n          \"broadcast_id\": 1\n        },\n        \"is_read\": false,\n        \"created_at\": \"2026-10-18T04:13:06+00:00\",\n        \"group\": \"today\"\n      },\n      {\n        \"id\": \"2d0b57b3-37b6-4a03-8b31-31c51489024d\",\n        \"type\": {\n          \"value\": \"complaint_replied\",\n          \"label\": \"تم الرد على شكواك\"\n        },\n        \"title\": \"تم الرد على شكواك\",\n        \"body\": \"وصل الرد الرسمي على CMP-005\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"complaint_details\",\n        \"ids\": {\n          \"complaint_id\": 5\n        },\n        \"is_read\": false,\n        \"created_at\": \"2026-10-18T00:39:06+00:00\",\n        \"group\": \"today\"\n      },\n      {\n        \"id\": \"a9482f73-3fe6-4d95-b439-95c2279ab438\",\n        \"type\": {\n          \"value\": \"complaint_status_changed\",\n          \"label\": \"تحديث على شكواك\"\n        },\n        \"title\": \"تحديث على شكواك\",\n        \"body\": \"شكواك CMP-005 أصبحت قيد المراجعة\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"complaint_details\",\n        \"ids\": {\n          \"complaint_id\": 5\n        },\n        \"is_read\": false,\n        \"created_at\": \"2026-10-17T21:19:06+00:00\",\n        \"group\": \"yesterday\"\n      },\n      {\n        \"id\": \"44724379-b3a9-402b-8ec1-b58b5e392c60\",\n        \"type\": {\n          \"value\": \"appeal_resumed\",\n          \"label\": \"تم استئناف نداءك\"\n        },\n        \"title\": \"تم استئناف نداءك\",\n        \"body\": \"تم استئناف النداء APL-2610-005\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"my_appeal_details\",\n        \"ids\": {\n          \"appeal_id\": 12\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-17T18:24:06+00:00\",\n        \"group\": \"yesterday\"\n      },\n      {\n        \"id\": \"fb233e68-f21e-4a3c-91fd-3b5572baa413\",\n        \"type\": {\n          \"value\": \"appeal_paused\",\n          \"label\": \"تم تعليق نداءك\"\n        },\n        \"title\": \"تم تعليق نداءك\",\n        \"body\": \"تم تعليق النداء APL-2610-005 مؤقتاً\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"my_appeal_details\",\n        \"ids\": {\n          \"appeal_id\": 12\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-17T15:33:06+00:00\",\n        \"group\": \"yesterday\"\n      },\n      {\n        \"id\": \"0cc2a88e-338e-4906-937e-903fba566d0a\",\n        \"type\": {\n          \"value\": \"appeal_closed\",\n          \"label\": \"تم إغلاق نداءك\"\n        },\n        \"title\": \"تم إغلاق نداءك\",\n        \"body\": \"أُغلق النداء APL-2610-005 (ازدحام الموعد)\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"my_appeals\",\n        \"ids\": {\n          \"appeal_id\": 12\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-17T12:10:06+00:00\",\n        \"group\": \"yesterday\"\n      },\n      {\n        \"id\": \"b1d2b554-b9e0-4ffa-8231-7c8a9f7af5aa\",\n        \"type\": {\n          \"value\": \"appeal_fulfilled\",\n          \"label\": \"تم استيفاء الاحتياج\"\n        },\n        \"title\": \"تم استيفاء الاحتياج\",\n        \"body\": \"اكتمل العدد المطلوب لنداءك APL-2610-005 — شكراً للمتبرعين\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"my_appeal_details\",\n        \"ids\": {\n          \"appeal_id\": 12\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-17T09:07:06+00:00\",\n        \"group\": \"yesterday\"\n      },\n      {\n        \"id\": \"d6ffdce8-d531-4412-81c0-d243cb55160a\",\n        \"type\": {\n          \"value\": \"appeal_response_confirmed\",\n          \"label\": \"متبرع جديد لنداءك\"\n        },\n        \"title\": \"متبرع جديد لنداءك\",\n        \"body\": \"تأكد موعد متبرع لنداءك APL-2610-005 (3 من 5)\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"my_appeal_details\",\n        \"ids\": {\n          \"appeal_id\": 12\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-17T05:40:06+00:00\",\n        \"group\": \"yesterday\"\n      },\n      {\n        \"id\": \"20019ffe-9162-451f-92e0-3cc0af79ed5c\",\n        \"type\": {\n          \"value\": \"appeal_rejected\",\n          \"label\": \"تعذّر نشر نداءك\"\n        },\n        \"title\": \"تعذّر نشر نداءك\",\n        \"body\": \"رُفض النداء APL-2610-005: ازدحام الموعد — يمكنك إنشاء نداء جديد\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"my_appeal_details\",\n        \"ids\": {\n          \"appeal_id\": 12\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-17T02:41:06+00:00\",\n        \"group\": \"yesterday\"\n      },\n      {\n        \"id\": \"1f19a824-d19d-4618-9cb8-39ee494d5da3\",\n        \"type\": {\n          \"value\": \"appeal_approved\",\n          \"label\": \"تم نشر نداءك\"\n        },\n        \"title\": \"تم نشر نداءك\",\n        \"body\": \"تمت الموافقة على نداءك APL-2610-005 وأصبح ظاهراً للمتبرعين\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"my_appeal_details\",\n        \"ids\": {\n          \"appeal_id\": 12\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-16T23:32:06+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"997fd5f8-d85e-480b-a9e9-d8bb60fdf683\",\n        \"type\": {\n          \"value\": \"appeal_targeted\",\n          \"label\": \"نداء تبرع عاجل\"\n        },\n        \"title\": \"نداء تبرع عاجل\",\n        \"body\": \"هناك حاجة عاجلة لفصيلة O- في مستشفى الملك فيصل التخصصي - الفرع الرئيسي\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"appeal_details\",\n        \"ids\": {\n          \"appeal_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-16T20:16:06+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"931eaeeb-872e-46eb-80df-36d0cb6e4525\",\n        \"type\": {\n          \"value\": \"eligibility_reached\",\n          \"label\": \"أصبحت مؤهلاً للتبرع\"\n        },\n        \"title\": \"أصبحت مؤهلاً للتبرع\",\n        \"body\": \"انتهت فترة الانتظار، احجز موعد تبرعك الآن\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"donation_types\",\n        \"ids\": [],\n        \"is_read\": true,\n        \"created_at\": \"2026-10-16T17:10:06+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"5c3f047e-dae1-4c77-a5ce-762e408f06a2\",\n        \"type\": {\n          \"value\": \"eligibility_approaching\",\n          \"label\": \"اقترب موعد تبرعك القادم\"\n        },\n        \"title\": \"اقترب موعد تبرعك القادم\",\n        \"body\": \"يمكنك التبرع مرة أخرى بعد 4 أيام. احجز موعدك الآن.\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"donation_types\",\n        \"ids\": [],\n        \"is_read\": true,\n        \"created_at\": \"2026-10-16T13:42:06+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"34f06639-44bc-4bc2-a5b6-4dce74200c28\",\n        \"type\": {\n          \"value\": \"donation_used\",\n          \"label\": \"تم استخدام وحدة الدم\"\n        },\n        \"title\": \"تم استخدام وحدة الدم\",\n        \"body\": \"تم استخدام وحدة الدم التي تبرعت بها. تبرعك ساهم في إنقاذ حياة مريض. رقم الوحدة: DON-2610-017\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"donation_tracking\",\n        \"ids\": {\n          \"donation_id\": 359\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-16T11:03:06+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"d0e11cc8-1c8d-4457-b886-c276b1192e1d\",\n        \"type\": {\n          \"value\": \"donation_stopped\",\n          \"label\": \"لم يكتمل التبرع\"\n        },\n        \"title\": \"لم يكتمل التبرع\",\n        \"body\": \"لم يكتمل التبرع — يرجى مراجعة المركز\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"donation_details\",\n        \"ids\": {\n          \"donation_id\": 361\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-16T07:50:06+00:00\",\n        \"group\": \"earlier\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 24,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"unread_count\": 3,\n      \"total\": 24\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — unread only",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications?unread=1",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": \"e02cf37e-816c-4269-a723-f218b59262f3\",\n        \"type\": {\n          \"value\": \"broadcast\",\n          \"label\": \"إشعار من الإدارة\"\n        },\n        \"title\": \"إشعار من الإدارة\",\n        \"body\": \"تبرعك القادم قد ينقذ حياة، احجز موعدك اليوم\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"notifications\",\n        \"ids\": {\n          \"broadcast_id\": 1\n        },\n        \"is_read\": false,\n        \"created_at\": \"2026-10-18T04:13:06+00:00\",\n        \"group\": \"today\"\n      },\n      {\n        \"id\": \"2d0b57b3-37b6-4a03-8b31-31c51489024d\",\n        \"type\": {\n          \"value\": \"complaint_replied\",\n          \"label\": \"تم الرد على شكواك\"\n        },\n        \"title\": \"تم الرد على شكواك\",\n        \"body\": \"وصل الرد الرسمي على CMP-005\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"complaint_details\",\n        \"ids\": {\n          \"complaint_id\": 5\n        },\n        \"is_read\": false,\n        \"created_at\": \"2026-10-18T00:39:06+00:00\",\n        \"group\": \"today\"\n      },\n      {\n        \"id\": \"a9482f73-3fe6-4d95-b439-95c2279ab438\",\n        \"type\": {\n          \"value\": \"complaint_status_changed\",\n          \"label\": \"تحديث على شكواك\"\n        },\n        \"title\": \"تحديث على شكواك\",\n        \"body\": \"شكواك CMP-005 أصبحت قيد المراجعة\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"complaint_details\",\n        \"ids\": {\n          \"complaint_id\": 5\n        },\n        \"is_read\": false,\n        \"created_at\": \"2026-10-17T21:19:06+00:00\",\n        \"group\": \"yesterday\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    },\n    \"meta\": {\n      \"unread_count\": 3,\n      \"total\": 24\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "unread-count",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"unread_count\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}notifications/unread-count",
                      "host": [
                        "{{base_url}}notifications"
                      ],
                      "path": [
                        "unread-count"
                      ]
                    },
                    "description": "## Purpose\nعدد غير المقروء (المستخدم).\n\n## Screens\n- U67 Notifications — user app `424:3327`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&scaling=scale-down&content-scaling=fixed)\n- U67 Notifications — user web `86:7430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&scaling=scale-down&content-scaling=fixed)\n- U68 Notifications v02 (all read) — user app `424:7145`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&scaling=scale-down&content-scaling=fixed)\n- G-U05 حذف إشعار / حذف الكل (gap U-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- W7 Header badge (web) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع `unread_count` فقط (خفيف — شارة الهيدر/الويب).\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (24 نوعاً للمستخدم — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/unread-count",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "unread-count"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"unread_count\": 3\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/unread-count",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "unread-count"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/unread-count",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "unread-count"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "read-notification",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"is_read\"); pm.expect(o).to.have.property(\"screen\"); pm.expect(o).to.have.property(\"ids\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}notifications/{id}/read",
                      "host": [
                        "{{base_url}}notifications"
                      ],
                      "path": [
                        "{id}",
                        "read"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{notification_id}}",
                          "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                        }
                      ]
                    },
                    "description": "## Purpose\nقراءة إشعار (المستخدم).\n\n## Screens\n- U67 Notifications — user app `424:3327`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&scaling=scale-down&content-scaling=fixed)\n- U67 Notifications — user web `86:7430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&scaling=scale-down&content-scaling=fixed)\n- U68 Notifications v02 (all read) — user app `424:7145`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&scaling=scale-down&content-scaling=fixed)\n- G-U05 حذف إشعار / حذف الكل (gap U-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- W7 Header badge (web) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Path params\n- `id` — required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id · example: `9d3c1e6a-0b7f-4a51-8a37-2f5c5b8f1a10`\n\n\n## Behaviour notes\n**Steps:**\n1. يضبط `read_at` للإشعار (idempotent) ويرجع العنصر + `screen` للتنقل.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (24 نوعاً للمستخدم — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.read` → ar «تمت قراءة الإشعار» / en \"Notification marked as read\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 404 | إشعار غير موجود أو لحساب آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — marked as read",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}/read",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تمت قراءة الإشعار\",\n  \"data\": {\n    \"id\": \"e02cf37e-816c-4269-a723-f218b59262f3\",\n    \"is_read\": true,\n    \"screen\": \"notifications\",\n    \"ids\": {\n      \"broadcast_id\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}/read",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — unknown / another account's notification",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}/read",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}/read",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "read-all",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"unread_count\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}notifications/read-all",
                      "host": [
                        "{{base_url}}notifications"
                      ],
                      "path": [
                        "read-all"
                      ]
                    },
                    "description": "## Purpose\nقراءة الكل (المستخدم).\n\n## Screens\n- U67 Notifications — user app `424:3327`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&scaling=scale-down&content-scaling=fixed)\n- U67 Notifications — user web `86:7430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&scaling=scale-down&content-scaling=fixed)\n- U68 Notifications v02 (all read) — user app `424:7145`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&scaling=scale-down&content-scaling=fixed)\n- G-U05 حذف إشعار / حذف الكل (gap U-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- W7 Header badge (web) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. `unreadNotifications()->update(read_at=now)` → يرجع `unread_count: 0`.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (24 نوعاً للمستخدم — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.read_all` → ar «تم تحديد الكل كمقروء» / en \"All notifications marked as read\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — all read",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/read-all",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "read-all"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديد الكل كمقروء\",\n  \"data\": {\n    \"unread_count\": 0\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/read-all",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "read-all"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/read-all",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "read-all"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "delete-notification",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}notifications/{id}",
                      "host": [
                        "{{base_url}}notifications"
                      ],
                      "path": [
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{notification_id}}",
                          "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                        }
                      ]
                    },
                    "description": "## Purpose\nحذف إشعار (المستخدم).\n\n## Screens\n- U67 Notifications — user app `424:3327`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&scaling=scale-down&content-scaling=fixed)\n- U67 Notifications — user web `86:7430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&scaling=scale-down&content-scaling=fixed)\n- U68 Notifications v02 (all read) — user app `424:7145`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&scaling=scale-down&content-scaling=fixed)\n- G-U05 حذف إشعار / حذف الكل (gap U-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- W7 Header badge (web) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n### Path params\n- `id` — required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id · example: `9d3c1e6a-0b7f-4a51-8a37-2f5c5b8f1a10`\n\n\n## Behaviour notes\n**Steps:**\n1. يحذف الإشعار.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (24 نوعاً للمستخدم — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.deleted` → ar «تم حذف الإشعار» / en \"Notification deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 404 | إشعار غير موجود أو لحساب آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — deleted",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الإشعار\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — already deleted",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/{id}",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "delete-all-notifications",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}notifications",
                      "host": [
                        "{{base_url}}notifications"
                      ],
                      "path": []
                    },
                    "description": "## Purpose\nحذف كل الإشعارات (المستخدم).\n\n## Screens\n- U67 Notifications — user app `424:3327`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&scaling=scale-down&content-scaling=fixed)\n- U67 Notifications — user web `86:7430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&scaling=scale-down&content-scaling=fixed)\n- U68 Notifications v02 (all read) — user app `424:7145`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&scaling=scale-down&content-scaling=fixed)\n- G-U05 حذف إشعار / حذف الكل (gap U-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- W7 Header badge (web) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يحذف كل إشعارات الحساب (بعد تأكيد في الواجهة).\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (24 نوعاً للمستخدم — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.deleted_all` → ar «تم حذف كل الإشعارات» / en \"All notifications deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — all deleted",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف كل الإشعارات\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — no token",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `notifications` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "notifications/unread-count",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"unread_count\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}notifications/unread-count",
                          "host": [
                            "{{base_url}}notifications"
                          ],
                          "path": [
                            "unread-count"
                          ]
                        },
                        "description": "## Purpose\nعدّاد الإشعارات غير المقروءة بعد كل أكشن — عدد غير المقروء (المستخدم).\n\n## Screens\n- U67 Notifications — user app `424:3327`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-3327&scaling=scale-down&content-scaling=fixed)\n- U67 Notifications — user web `86:7430`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=86-7430&scaling=scale-down&content-scaling=fixed)\n- U68 Notifications v02 (all read) — user app `424:7145`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7145&scaling=scale-down&content-scaling=fixed)\n- G-U05 حذف إشعار / حذف الكل (gap U-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- W7 Header badge (web) — user web `125:26114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=125-26114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) — **مستثنى من `complete.info`**\n- Middleware: `api.lang` · `auth:sanctum` · `donor`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع `unread_count` فقط (خفيف — شارة الهيدر/الويب).\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (24 نوعاً للمستخدم — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المستخدم محظور (`is_blocked`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}notifications/unread-count",
                              "host": [
                                "{{base_url}}notifications"
                              ],
                              "path": [
                                "unread-count"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"unread_count\": 3\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — no token",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}notifications/unread-count",
                              "host": [
                                "{{base_url}}notifications"
                              ],
                              "path": [
                                "unread-count"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المستخدم محظور (is_blocked)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}notifications/unread-count",
                              "host": [
                                "{{base_url}}notifications"
                              ],
                              "path": [
                                "unread-count"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/user/fill/notifications",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "notifications",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الإشعارات على حساب المتبرع الحالي (`{{user_token}}`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/user` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{user_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: notifications (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"notifications\": 25\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{user_token}}",
                                "description": "required · Sanctum token of the donor"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/user/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "user",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "appointments",
                                  "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "Provider",
      "description": "لوحة بنك الدم — `/provider/*`. Bearer `{{employee_token}}`.",
      "item": [
        {
          "name": "Auth",
          "item": [
            {
              "name": "login",
              "item": [
                {
                  "name": "login",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.collectionVariables.set(\"employee_token\", pm.response.json().data.token);",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"token\"); });",
                          "{ const v = pm.response.json().data.token; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"employee_token\", v); pm.environment.set(\"employee_token\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/auth/login",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "auth",
                        "login"
                      ]
                    },
                    "description": "## Purpose\nدخول موظف البنك بالجوال وكلمة المرور.\n\n## Screens\n- P1 Sign In — provider (web) `229:32997`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&scaling=scale-down&content-scaling=fixed)\n- G-P12 نسيت كلمة المرور (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: base login throttle (`LoginRateLimiter` — 5 محاولات/دقيقة لكل جوال+IP → 429 `retry_after_seconds`)\n\n## Parameters & fields\n### Body (form-data)\n- `country_code` — required · required|exists:countries,code · مفتاح الدولة · example: `966`\n- `phone` — required · required|PhoneNormalizer · الجوال (C3) · example: `0501234567`\n- `password` — required · required|string · كلمة المرور · example: `password`\n\n\n## Behaviour notes\n**Steps:**\n1. C3: الدخول **بالجوال + كلمة المرور** (ليس رقم الموظف).\n2. يبحث عن `Employee` بالجوال المطبّع (non-deleted) → `Hash::check`.\n3. يتحقق: الموظف نشط · فرعه نشط (لغير الـ owner) · جهته نشطة — وإلا 403 بالسبب.\n4. يصدر توكن Sanctum على guard `employee`، يحدّث `last_login_at`، ويرجع `EmployeeResource` **والتوكن داخله** + `permissions[]` (owner = كل الأقسام).\n\n**Business rules / constraints:**\n- تعطيل الموظف/الفرع/الجهة يحذف التوكنات فوراً (لا انتظار لانتهاء الجلسة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- Laravel `Login`/`Failed`/`Lockout` events (guard `employee`).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.logged_in_successfully` → ar «تم تسجيل الدخول بنجاح» / en \"Logged in successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (phone, password) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | جوال/كلمة مرور خاطئة | `auth.invalid_credentials` | بيانات الدخول غير صحيحة | Invalid credentials |\n| 403 | الموظف معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |\n| 403 | الفرع معطّل | `employee.branch_inactive` | الفرع التابع له حسابك معطّل | Your branch is disabled |\n| 403 | الجهة معطّلة | `employee.organization_inactive` | الجهة معطّلة | Your organization is disabled |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "country_code",
                          "value": "966",
                          "type": "text",
                          "description": "required · required|exists:countries,code · مفتاح الدولة"
                        },
                        {
                          "key": "phone",
                          "value": "0501234567",
                          "type": "text",
                          "description": "required · required|PhoneNormalizer · الجوال (C3)"
                        },
                        {
                          "key": "password",
                          "value": "password",
                          "type": "text",
                          "description": "required · required|string · كلمة المرور"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تسجيل الدخول بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"النداءات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"المخزون\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"إجمالي الاحتياج\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"التواصل مع الإدارة\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"بيانات الجهة\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"إدارة الفروع\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"الموظفون\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Logged in successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"Home\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"Appeals\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"Inventory\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"Blood needs\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"Contact admin\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"Organization data\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"Branch management\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"Employees\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — branch employee (appointments + home only)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "502000002",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تسجيل الدخول بنجاح\",\n  \"data\": {\n    \"id\": 2,\n    \"employee_no\": \"EMP-00002\",\n    \"name\": \"أحمد محمد العتيبي\",\n    \"job_title\": \"موظف استقبال\",\n    \"country_code\": \"966\",\n    \"phone\": \"502000002\",\n    \"email\": \"a.alotaibi@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/2.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-08\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (phone, password)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل رمز الدولة مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"country_code\": [\n      \"الحقل رمز الدولة مطلوب.\"\n    ],\n    \"phone\": [\n      \"الحقل الهاتف مطلوب.\"\n    ],\n    \"password\": [\n      \"الحقل كلمة المرور مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — جوال/كلمة مرور خاطئة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "wrong-password",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"بيانات الدخول غير صحيحة\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف معطّل",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0502000004",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    },
                    {
                      "name": "❌ 429 — تجاوز حد الطلبات",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0599000111",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                    }
                  ]
                }
              ],
              "description": "Flow `login` — 1 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests."
            },
            {
              "name": "forgot-password",
              "item": [
                {
                  "name": "forgot-password-send-code",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"retry_after_seconds\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/auth/forgot-password/send-code",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "auth",
                        "forgot-password",
                        "send-code"
                      ]
                    },
                    "description": "## Purpose\nإرسال رمز استعادة كلمة المرور (موظف البنك).\n\n## Screens\n- P1 Sign In — «نسيت كلمة المرور» — provider (web) `229:32997`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&scaling=scale-down&content-scaling=fixed)\n- P90 Frame 47 — كلمة المرور الجديدة — provider (web) `2226:8`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2226-8&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2226-8&scaling=scale-down&content-scaling=fixed)\n- G-P12 إدخال الجوال → رمز OTP (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: `throttle:request-code` + `OtpService` quota\n\n## Parameters & fields\n### Body (form-data)\n- `country_code` — required · required|exists:countries,code ·  · example: `966`\n- `phone` — required · required|PhoneNormalizer · الجوال المسجّل · example: `0501234567`\n\n\n## Behaviour notes\n**Steps:**\n1. يبحث عن موظف نشط بالجوال؛ **لا يكشف** عدم الوجود (نفس الرد).\n2. `OtpService::sendOtp(employee, OtpType::FORGET_PASSWORD)` (otpable = Employee) — throttle الـ base (`assertCanSend`: cooldown + hourly).\n3. يرجع `retry_after_seconds`.\n\n**Status / state transitions:** none (read-only).\n\n**Multi-step flow:** **1/3**: send-code (هذا) → verify-code → reset. OTP type `OtpType::FORGET_PASSWORD`, otpable = Employee.\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: uses the seeded staff account 502000012 so the owner password never changes (the dev code is 1234).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.forgot_password_code_sent` → ar «تم إرسال رمز التحقق إلى جوالك» / en \"A verification code was sent to your phone\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (phone) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 429 | cooldown/quota (`OtpThrottledException`) | `auth.otp_cooldown_wait` / `auth.otp_hourly_limit` | حاول بعد :seconds ثانية | Retry after :seconds seconds |",
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "country_code",
                          "value": "966",
                          "type": "text",
                          "description": "required · required|exists:countries,code · "
                        },
                        {
                          "key": "phone",
                          "value": "0502000012",
                          "type": "text",
                          "description": "required · required|PhoneNormalizer · الجوال المسجّل"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/send-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "send-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال رمز التحقق إلى جوالك\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                    },
                    {
                      "name": "❌ 429 — cooldown/quota (OtpThrottledException)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/send-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "send-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Too Many Requests",
                      "code": 429,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى الانتظار 59 ثانية قبل طلب رمز جديد\",\n  \"data\": {\n    \"retry_after_seconds\": 59\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (phone)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/send-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "send-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل رمز الدولة مطلوب. (and 1 more error)\",\n  \"errors\": {\n    \"country_code\": [\n      \"الحقل رمز الدولة مطلوب.\"\n    ],\n    \"phone\": [\n      \"الحقل الهاتف مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/send-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "send-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"A verification code was sent to your phone\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "forgot-password-verify-code",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.collectionVariables.set(\"temp-token\", pm.response.json().data.token);",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"token\"); pm.expect(o).to.have.property(\"expires_in_seconds\"); });",
                          "{ const v = pm.response.json().data.token; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"temp-token\", v); pm.environment.set(\"temp-token\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/auth/forgot-password/verify-code",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "auth",
                        "forgot-password",
                        "verify-code"
                      ]
                    },
                    "description": "## Purpose\nالتحقق من رمز الاستعادة (موظف البنك).\n\n## Screens\n- P1 Sign In — «نسيت كلمة المرور» — provider (web) `229:32997`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&scaling=scale-down&content-scaling=fixed)\n- P90 Frame 47 — كلمة المرور الجديدة — provider (web) `2226:8`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2226-8&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2226-8&scaling=scale-down&content-scaling=fixed)\n- G-P12 إدخال الجوال → رمز OTP (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: `throttle:verify-code`\n\n## Parameters & fields\n### Body (form-data)\n- `country_code` — required · required|exists:countries,code ·  · example: `966`\n- `phone` — required · required|PhoneNormalizer ·  · example: `0501234567`\n- `code` — required · required|digits:4 · رمز OTP · example: `1234`\n\n\n## Behaviour notes\n**Steps:**\n1. `OtpService::verifyOtp` → يصدر **توكن مؤقت** بـ ability `forget-password` (صلاحية 10 دقائق) — مثل `ForgotPassword*` في الـ base.\n\n**Status / state transitions:** none (read-only).\n\n**Multi-step flow:** **2/3**: send-code → verify-code (هذا) → reset. OTP type `OtpType::FORGET_PASSWORD`, otpable = Employee.\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.forgot_password_code_verified` → ar «تم التحقق من الرمز» / en \"Code verified\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (code) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 422 | رمز خاطئ/منتهي | `validation.custom.code.invalid` | الرمز غير صحيح أو منتهي | Invalid or expired code |",
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "country_code",
                          "value": "966",
                          "type": "text",
                          "description": "required · required|exists:countries,code · "
                        },
                        {
                          "key": "phone",
                          "value": "0502000012",
                          "type": "text",
                          "description": "required · required|PhoneNormalizer · "
                        },
                        {
                          "key": "code",
                          "value": "1234",
                          "type": "text",
                          "description": "required · required|digits:4 · رمز OTP"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/verify-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "verify-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "code",
                              "value": "1234",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم التحقق من الرمز\",\n  \"data\": {\n    \"token\": \"12|f3Qx…\",\n    \"expires_in_seconds\": 600\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/verify-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "verify-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "501234567",
                              "type": "text"
                            },
                            {
                              "key": "code",
                              "value": "1234",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Code verified\",\n  \"data\": {\n    \"token\": \"12|f3Qx…\",\n    \"expires_in_seconds\": 600\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — رمز خاطئ/منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/verify-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "verify-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "code",
                              "value": "9999",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"رمز التحقق غير صحيح أو منتهي الصلاحية.\",\n  \"errors\": {\n    \"code\": [\n      \"رمز التحقق غير صحيح أو منتهي الصلاحية.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (code)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/verify-code",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "verify-code"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "code",
                              "value": "12",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن يحتوي حقل رمز التحقق على 4 رقمًا/أرقام.\",\n  \"errors\": {\n    \"code\": [\n      \"يجب أن يحتوي حقل رمز التحقق على 4 رقمًا/أرقام.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "forgot-password-reset",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{temp-token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/auth/forgot-password/reset",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "auth",
                        "forgot-password",
                        "reset"
                      ]
                    },
                    "description": "## Purpose\nتعيين كلمة مرور جديدة (موظف البنك).\n\n## Screens\n- P1 Sign In — «نسيت كلمة المرور» — provider (web) `229:32997`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&scaling=scale-down&content-scaling=fixed)\n- P90 Frame 47 — كلمة المرور الجديدة — provider (web) `2226:8`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2226-8&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2226-8&scaling=scale-down&content-scaling=fixed)\n- G-P12 إدخال الجوال → رمز OTP (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{temp-token}}` (Sanctum). `auth:employee` + `ability:forget-password` (توكن مؤقت)\n- Middleware: `api.lang` · `auth:employee` · `ability:forget-password`\n- Rate limit: `throttle:verify-code`\n\n## Parameters & fields\n### Body (form-data)\n- `password` — required · required|string|min:8|confirmed · كلمة المرور الجديدة · example: `NewPass@123`\n- `password_confirmation` — required · required|same:password · التأكيد · example: `NewPass@123`\n\n\n## Behaviour notes\n**Steps:**\n1. بالتوكن المؤقت: يحدّث كلمة المرور (hashed cast)، يحذف **كل** توكنات الموظف (بما فيها المؤقت)، `failActiveOtps`.\n2. P90 «Frame 47».\n\n**Status / state transitions:** none (read-only).\n\n**Multi-step flow:** **3/3**: send-code → verify-code → reset (هذا) → login. OTP type `OtpType::FORGET_PASSWORD`, otpable = Employee.\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.password_reset_success` → ar «تم تغيير كلمة المرور بنجاح» / en \"Password changed successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (password) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | توكن مؤقت مفقود/منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{temp-token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "password",
                          "value": "NewPass@123",
                          "type": "text",
                          "description": "required · required|string|min:8|confirmed · كلمة المرور الجديدة"
                        },
                        {
                          "key": "password_confirmation",
                          "value": "NewPass@123",
                          "type": "text",
                          "description": "required · required|same:password · التأكيد"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{temp-token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/reset",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "reset"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "password",
                              "value": "NewPass@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "NewPass@123",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تغيير كلمة المرور بنجاح\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{temp-token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/reset",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "reset"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "password",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Password changed successfully\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (password)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{temp-token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/reset",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "reset"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "password",
                              "value": "short",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "other",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن يكون طول نص كلمة المرور على الأقل 8 حروفٍ/حرفًا (and 2 more errors)\",\n  \"errors\": {\n    \"password\": [\n      \"يجب أن يكون طول نص كلمة المرور على الأقل 8 حروفٍ/حرفًا\",\n      \"حقل التأكيد غير مُطابق للحقل كلمة المرور\"\n    ],\n    \"password_confirmation\": [\n      \"يجب أن يتطابق الحقل تأكيد كلمة المرور مع كلمة المرور\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — توكن مؤقت مفقود/منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{temp-token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/forgot-password/reset",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "forgot-password",
                            "reset"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "password",
                              "value": "NewPass@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "NewPass@123",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                }
              ],
              "description": "Flow `forgot-password` — 3 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests."
            },
            {
              "name": "session",
              "item": [
                {
                  "name": "me",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"unread_notifications_count\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/me",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "me"
                      ]
                    },
                    "description": "## Purpose\nبيانات الموظف الحالي وصلاحياته.\n\n## Screens\n- P29 Employee Account — provider (web) `226:30482`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30482&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30482&scaling=scale-down&content-scaling=fixed)\n- P2 Home header (الموظف، المسمى، الجهة) — provider (web) `224:2927`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-2927&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-2927&scaling=scale-down&content-scaling=fixed)\n- G-P01 sidebar من `permissions` (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. `EmployeeResource`: الاسم ar/en؟ (الاسم نص واحد)، المسمى، القسم/الجهة، `employee_no` (EMP-)، تاريخ الانضمام، الجوال، البريد، الجهة، الفرع، المدينة، الحالة، الصورة، `is_owner`، `permissions[]` {value,label}، `lang`، `unread_notifications_count`.\n2. الفرونت يبني الـ sidebar والصفحات من `permissions` — القسم غير المسموح يختفي، وفتح رابطه مباشرة → 403 `forbidden_section`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"النداءات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"المخزون\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"إجمالي الاحتياج\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"التواصل مع الإدارة\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"بيانات الجهة\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"إدارة الفروع\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"الموظفون\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"unread_notifications_count\": 0\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"Home\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"Appeals\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"Inventory\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"Blood needs\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"Contact admin\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"Organization data\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"Branch management\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"Employees\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"Riyadh\"\n    },\n    \"unread_notifications_count\": 0\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — branch employee",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 2,\n    \"employee_no\": \"EMP-00002\",\n    \"name\": \"أحمد محمد العتيبي\",\n    \"job_title\": \"موظف استقبال\",\n    \"country_code\": \"966\",\n    \"phone\": \"502000002\",\n    \"email\": \"a.alotaibi@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/2.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-08\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    \"unread_notifications_count\": 0\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "update-me",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/me",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "me"
                      ]
                    },
                    "description": "## Purpose\nتعديل بريد وصورة الموظف.\n\n## Screens\n- P30 Edit Employee Account — provider (web) `229:32111`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32111&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32111&scaling=scale-down&content-scaling=fixed)\n- P31 Edit Account v02 — provider (web) `229:32529`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32529&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32529&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Body (form-data)\n- `email` — required · required|email|max:150|unique:employees,email,{me} (whereNull deleted_at) · البريد · example: `a.alomari@kfshrc.edu.sa`\n- `avatar` — optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة · example: `(file)`\n\n\n## Behaviour notes\n**Steps:**\n1. يعدّل **البريد والصورة فقط** — الاسم/الجوال/المسمى للقراءة (يعدّلها الـ owner/الأدمن).\n2. الصورة عبر `FILES` (`avatar`) — إرسالها يستبدل القديمة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/employee.profile_updated` → ar «تم تحديث بياناتك بنجاح» / en \"Your details were updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (email, avatar) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "email",
                          "value": "a.alomari@kfshrc.edu.sa",
                          "type": "text",
                          "description": "required · required|email|max:150|unique:employees,email,{me} (whereNull deleted_at) · البريد"
                        },
                        {
                          "key": "avatar",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "email",
                              "value": "a.alomari@kfshrc.edu.sa",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث بياناتك بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"النداءات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"المخزون\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"إجمالي الاحتياج\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"التواصل مع الإدارة\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"بيانات الجهة\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"إدارة الفروع\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"الموظفون\"\n      }\n    ],\n    \"lang\": \"ar\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "email",
                              "value": "a.alomari@kfshrc.edu.sa",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Your details were updated\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"Home\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"Appeals\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"Inventory\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"Blood needs\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"Contact admin\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"Organization data\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"Branch management\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"Employees\"\n      }\n    ],\n    \"lang\": \"ar\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (email, avatar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "email",
                              "value": "a.alotaibi@kfshrc.edu.sa",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"قيمة الحقل البريد الالكتروني مُستخدمة من قبل\",\n  \"errors\": {\n    \"email\": [\n      \"قيمة الحقل البريد الالكتروني مُستخدمة من قبل\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "email",
                              "value": "x@example.com",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "email",
                              "value": "x@example.com",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "change-password",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\" }; const tries = [\"password\", \"NewPass@123\"]; const attempt = (i) => { if (i >= tries.length) return; pm.sendRequest({ url: base + \"provider/auth/login\", method: \"POST\", header: h, body: { mode: \"formdata\", formdata: [{ key: \"country_code\", value: \"966\" }, { key: \"phone\", value: \"502000014\" }, { key: \"password\", value: tries[i] }] } }, (e, r) => { if (e || r.code !== 200) return attempt(i + 1); pm.variables.set(\"employee_token\", r.json().data.token); pm.request.body.formdata.each((f) => { if (f.key === \"current_password\") f.value = tries[i]; if (f.key === \"password\" || f.key === \"password_confirmation\") f.value = tries[1 - i]; }); }); }; attempt(0);",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));",
                          "pm.variables.unset(\"employee_token\");"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/me/change-password",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "me",
                        "change-password"
                      ]
                    },
                    "description": "## Purpose\nتغيير كلمة مرور الموظف.\n\n## Screens\n- P29 Employee Account — «تغيير كلمة السر» (gap G-P12) — provider (web) `226:30482`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30482&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30482&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Body (form-data)\n- `current_password` — required · required|current_password:employee · كلمة المرور الحالية · example: `password`\n- `password` — required · required|string|min:8|confirmed|different:current_password · الجديدة · example: `NewPass@123`\n- `password_confirmation` — required · required · التأكيد · example: `NewPass@123`\n\n\n## Behaviour notes\n**Steps:**\n1. يتحقق من `current_password` (`current_password:employee` rule)، يحفظ الجديدة، يحذف باقي التوكنات عدا الحالي.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: runs on a seeded staff account (502000014); the pre-request alternates the two passwords so the request can run again.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.password_changed` → ar «تم تغيير كلمة المرور بنجاح» / en \"Password changed successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (current_password, password) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "current_password",
                          "value": "password",
                          "type": "text",
                          "description": "required · required|current_password:employee · كلمة المرور الحالية"
                        },
                        {
                          "key": "password",
                          "value": "NewPass@123",
                          "type": "text",
                          "description": "required · required|string|min:8|confirmed|different:current_password · الجديدة"
                        },
                        {
                          "key": "password_confirmation",
                          "value": "NewPass@123",
                          "type": "text",
                          "description": "required · required · التأكيد"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me/change-password",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me",
                            "change-password"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "current_password",
                              "value": "password",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "NewPass@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "NewPass@123",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تغيير كلمة المرور بنجاح\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me/change-password",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me",
                            "change-password"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "current_password",
                              "value": "NewPass@123",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "password",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Password changed successfully\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (current_password, password)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me/change-password",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me",
                            "change-password"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "current_password",
                              "value": "wrong-one",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "short",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"كلمة المرور غير صحيحة. (and 2 more errors)\",\n  \"errors\": {\n    \"current_password\": [\n      \"كلمة المرور غير صحيحة.\"\n    ],\n    \"password\": [\n      \"يجب أن يكون طول نص كلمة المرور على الأقل 8 حروفٍ/حرفًا\",\n      \"حقل التأكيد غير مُطابق للحقل كلمة المرور\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me/change-password",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me",
                            "change-password"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "current_password",
                              "value": "password",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "NewPass@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "NewPass@123",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/me/change-password",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "me",
                            "change-password"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "current_password",
                              "value": "password",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "NewPass@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "NewPass@123",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "logout",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const base = pm.variables.replaceIn(\"{{base_url}}\"); const h = { Accept: \"application/json\" }; const tries = [\"password\", \"NewPass@123\"]; const attempt = (i) => { if (i >= tries.length) return; pm.sendRequest({ url: base + \"provider/auth/login\", method: \"POST\", header: h, body: { mode: \"formdata\", formdata: [{ key: \"country_code\", value: \"966\" }, { key: \"phone\", value: \"502000013\" }, { key: \"password\", value: tries[i] }] } }, (e, r) => { if (e || r.code !== 200) return attempt(i + 1); pm.variables.set(\"employee_token\", r.json().data.token); }); }; attempt(0);",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));",
                          "pm.variables.unset(\"employee_token\");"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/auth/logout",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "auth",
                        "logout"
                      ]
                    },
                    "description": "## Purpose\nخروج موظف البنك.\n\n## Screens\n- P31 Edit Account v02 + modal «تسجيل الخروج» — provider (web) `229:32529`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32529&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32529&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Body (form-data)\n- `device_id` — optional · nullable|string|max:191 · معرّف الجهاز · source: POST {{base_url}}provider/devices · example: `web-chrome-01`\n\n\n## Behaviour notes\n**Steps:**\n1. يحذف التوكن الحالي + جهاز `device_id` لو أُرسل.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: runs on a seeded staff account (502000013), not on the owner.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.logged_out` → ar «تم تسجيل الخروج» / en \"Logged out\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "device_id",
                          "value": "web-chrome-01",
                          "type": "text",
                          "description": "optional · nullable|string|max:191 · معرّف الجهاز · source: POST {{base_url}}provider/devices"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/logout",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "logout"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "web-chrome-01",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تسجيل الخروج\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/logout",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "logout"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Logged out\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/logout",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "logout"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "item": [
                    {
                      "name": "provider/auth/login",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.collectionVariables.set(\"employee_token\", pm.response.json().data.token);",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"token\"); });",
                              "{ const v = pm.response.json().data.token; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"employee_token\", v); pm.environment.set(\"employee_token\", v); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "description": "## Purpose\nمصدر `{{employee_token}}` (يُحفظ تلقائياً بعد تسجيل الدخول) — دخول موظف البنك بالجوال وكلمة المرور.\n\n## Screens\n- P1 Sign In — provider (web) `229:32997`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&scaling=scale-down&content-scaling=fixed)\n- G-P12 نسيت كلمة المرور (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: base login throttle (`LoginRateLimiter` — 5 محاولات/دقيقة لكل جوال+IP → 429 `retry_after_seconds`)\n\n## Parameters & fields\n### Body (form-data)\n- `country_code` — required · required|exists:countries,code · مفتاح الدولة · example: `966`\n- `phone` — required · required|PhoneNormalizer · الجوال (C3) · example: `0501234567`\n- `password` — required · required|string · كلمة المرور · example: `password`\n\n\n## Behaviour notes\n**Steps:**\n1. C3: الدخول **بالجوال + كلمة المرور** (ليس رقم الموظف).\n2. يبحث عن `Employee` بالجوال المطبّع (non-deleted) → `Hash::check`.\n3. يتحقق: الموظف نشط · فرعه نشط (لغير الـ owner) · جهته نشطة — وإلا 403 بالسبب.\n4. يصدر توكن Sanctum على guard `employee`، يحدّث `last_login_at`، ويرجع `EmployeeResource` **والتوكن داخله** + `permissions[]` (owner = كل الأقسام).\n\n**Business rules / constraints:**\n- تعطيل الموظف/الفرع/الجهة يحذف التوكنات فوراً (لا انتظار لانتهاء الجلسة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- Laravel `Login`/`Failed`/`Lockout` events (guard `employee`).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.logged_in_successfully` → ar «تم تسجيل الدخول بنجاح» / en \"Logged in successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (phone, password) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | جوال/كلمة مرور خاطئة | `auth.invalid_credentials` | بيانات الدخول غير صحيحة | Invalid credentials |\n| 403 | الموظف معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |\n| 403 | الفرع معطّل | `employee.branch_inactive` | الفرع التابع له حسابك معطّل | Your branch is disabled |\n| 403 | الجهة معطّلة | `employee.organization_inactive` | الجهة معطّلة | Your organization is disabled |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text",
                              "description": "required · required|exists:countries,code · مفتاح الدولة"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text",
                              "description": "required · required|PhoneNormalizer · الجوال (C3)"
                            },
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text",
                              "description": "required · required|string · كلمة المرور"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0501234567",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم تسجيل الدخول بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"النداءات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"المخزون\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"إجمالي الاحتياج\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"التواصل مع الإدارة\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"بيانات الجهة\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"إدارة الفروع\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"الموظفون\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0501234567",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Logged in successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"Home\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"Appeals\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"Inventory\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"Blood needs\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"Contact admin\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"Organization data\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"Branch management\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"Employees\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee (appointments + home only)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "502000002",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم تسجيل الدخول بنجاح\",\n  \"data\": {\n    \"id\": 2,\n    \"employee_no\": \"EMP-00002\",\n    \"name\": \"أحمد محمد العتيبي\",\n    \"job_title\": \"موظف استقبال\",\n    \"country_code\": \"966\",\n    \"phone\": \"502000002\",\n    \"email\": \"a.alotaibi@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/2.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-08\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (phone, password)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": []
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل رمز الدولة مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"country_code\": [\n      \"الحقل رمز الدولة مطلوب.\"\n    ],\n    \"phone\": [\n      \"الحقل الهاتف مطلوب.\"\n    ],\n    \"password\": [\n      \"الحقل كلمة المرور مطلوب.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — جوال/كلمة مرور خاطئة",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0501234567",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "wrong-password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"بيانات الدخول غير صحيحة\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف معطّل",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0502000004",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        },
                        {
                          "name": "❌ 429 — تجاوز حد الطلبات",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0599000111",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "x",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Too Many Requests",
                          "code": 429,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                        }
                      ]
                    }
                  ],
                  "description": "كل ما يحتاجه flow `session` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>»."
                }
              ],
              "description": "Flow `session` — 4 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests."
            }
          ]
        },
        {
          "name": "Logic",
          "item": [
            {
              "name": "appointments",
              "description": "Flow `appointments` — 8 endpoints (sprint 4). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "appointments-schedule",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { if (!pm.variables.get(\"provider_branch_id\")) { const base = pm.variables.replaceIn(\"{{base_url}}\"); pm.sendRequest({ url: base + \"provider/lookups/branches\", method: \"GET\", header: { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") } }, (e, r) => { if (e || r.code !== 200) return; const b = r.json().data.find((x) => x.id); if (b) { pm.collectionVariables.set(\"provider_branch_id\", b.id); pm.environment.set(\"provider_branch_id\", b.id); } }); } } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"week board\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"week_start\"); pm.expect(o).to.have.property(\"days\"); pm.expect(o).to.have.property(\"rows\"); });",
                          "pm.test(\"seven days, cells carry booked/capacity/status/counts\", () => { const d = pm.response.json().data; pm.expect(d.days).to.have.length(7); if (d.rows.length) { const c = d.rows[0].cells[0]; pm.expect(d.rows[0].cells).to.have.length(7); [\"date\", \"booked\", \"capacity\", \"status\", \"counts_by_status\"].forEach((k) => pm.expect(c).to.have.property(k)); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments/schedule",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments",
                        "schedule"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "{{provider_branch_id}}",
                          "description": "owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                          "disabled": false
                        },
                        {
                          "key": "week_start",
                          "value": "{{dm2}}",
                          "description": "optional · nullable|date_format:Y-m-d · بداية الأسبوع",
                          "disabled": true
                        },
                        {
                          "key": "status",
                          "value": "pending",
                          "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nشبكة حجوزات الأسبوع.\n\n## Screens\n- P20 Appointments — الجدول الأسبوعي — provider (web) `224:7139`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — شبكة الفترات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- G-P17 درج حجوزات الفترة + تفاصيل الحجز (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Query params\n- `branch_id` — owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `{{provider_branch_id}}`\n- `week_start` — optional · nullable|date_format:Y-m-d · بداية الأسبوع · example: `2026-10-17`\n- `status` — optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة · example: `pending`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. شبكة الأسبوع (`week_start` = السبت/الأحد حسب إعداد الفرع، الافتراضي الأسبوع الحالي): صف لكل فترة × عمود لكل يوم.\n2. كل خلية: `booked/capacity`, `status` (متاح/ممتلئ/مغلق/قارب الامتلاء)، `counts_by_status`.\n3. فلاتر: `branch_id` (owner)، `status` (يقصر العدّ)، `donation_type_id`.\n4. فتح خلية → `GET provider/appointments?date&start_time` (درج G-P17).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: `branch_id` is `{{provider_branch_id}}` - the pre-request fills it with the first branch of the token scope while the branches folder has not created one yet.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id, week_start) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/schedule?branch_id=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "schedule"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "{{provider_branch_id}}",
                              "description": "owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": false
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · بداية الأسبوع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"week_start\": \"2026-10-17\",\n    \"days\": [\n      {\n        \"date\": \"2026-10-17\",\n        \"day_name\": \"السبت\"\n      },\n      {\n        \"date\": \"2026-10-18\",\n        \"day_name\": \"الأحد\"\n      },\n      {\n        \"date\": \"2026-10-19\",\n        \"day_name\": \"الاثنين\"\n      },\n      {\n        \"date\": \"2026-10-20\",\n        \"day_name\": \"الثلاثاء\"\n      },\n      {\n        \"date\": \"2026-10-21\",\n        \"day_name\": \"الأربعاء\"\n      },\n      {\n        \"date\": \"2026-10-22\",\n        \"day_name\": \"الخميس\"\n      },\n      {\n        \"date\": \"2026-10-23\",\n        \"day_name\": \"الجمعة\"\n      }\n    ],\n    \"rows\": [\n      {\n        \"start_time\": \"08:00\",\n        \"end_time\": \"08:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"08:30\",\n        \"end_time\": \"09:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"09:00\",\n        \"end_time\": \"09:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 2,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 5,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"full\",\n              \"label\": \"ممتلئ\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 4,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"09:30\",\n        \"end_time\": \"10:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 1,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"10:00\",\n        \"end_time\": \"10:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 1,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 4,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"near_full\",\n              \"label\": \"قارب الامتلاء\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 3,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"10:30\",\n        \"end_time\": \"11:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"11:00\",\n        \"end_time\": \"11:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 1,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 3,\n            \"capacity\": 3,\n            \"status\": {\n              \"value\": \"full\",\n              \"label\": \"ممتلئ\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 3,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"11:30\",\n        \"end_time\": \"12:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"12:00\",\n        \"end_time\": \"12:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 1\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"12:30\",\n        \"end_time\": \"13:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"13:00\",\n        \"end_time\": \"13:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"13:30\",\n        \"end_time\": \"14:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"14:00\",\n        \"end_time\": \"14:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"14:30\",\n        \"end_time\": \"15:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"15:00\",\n        \"end_time\": \"15:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"15:30\",\n        \"end_time\": \"16:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"16:00\",\n        \"end_time\": \"16:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"16:30\",\n        \"end_time\": \"17:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 2,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"17:00\",\n        \"end_time\": \"17:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"17:30\",\n        \"end_time\": \"18:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"18:00\",\n        \"end_time\": \"18:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"18:30\",\n        \"end_time\": \"19:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"19:00\",\n        \"end_time\": \"19:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"19:30\",\n        \"end_time\": \"20:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/schedule?branch_id=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "schedule"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "{{provider_branch_id}}",
                              "description": "owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": false
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · بداية الأسبوع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"week_start\": \"2026-10-17\",\n    \"days\": [\n      {\n        \"date\": \"2026-10-17\",\n        \"day_name\": \"Saturday\"\n      },\n      {\n        \"date\": \"2026-10-18\",\n        \"day_name\": \"Sunday\"\n      },\n      {\n        \"date\": \"2026-10-19\",\n        \"day_name\": \"Monday\"\n      },\n      {\n        \"date\": \"2026-10-20\",\n        \"day_name\": \"Tuesday\"\n      },\n      {\n        \"date\": \"2026-10-21\",\n        \"day_name\": \"Wednesday\"\n      },\n      {\n        \"date\": \"2026-10-22\",\n        \"day_name\": \"Thursday\"\n      },\n      {\n        \"date\": \"2026-10-23\",\n        \"day_name\": \"Friday\"\n      }\n    ],\n    \"rows\": [\n      {\n        \"start_time\": \"08:00\",\n        \"end_time\": \"08:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"08:30\",\n        \"end_time\": \"09:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"09:00\",\n        \"end_time\": \"09:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 2,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 5,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"full\",\n              \"label\": \"Full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 4,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"09:30\",\n        \"end_time\": \"10:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 1,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"10:00\",\n        \"end_time\": \"10:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 1,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 4,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"near_full\",\n              \"label\": \"Almost full\",\n              \"color\": \"#B45309\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 3,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"10:30\",\n        \"end_time\": \"11:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"11:00\",\n        \"end_time\": \"11:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 1,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 3,\n            \"capacity\": 3,\n            \"status\": {\n              \"value\": \"full\",\n              \"label\": \"Full\",\n              \"color\": \"#BB4D00\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 3,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"11:30\",\n        \"end_time\": \"12:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"12:00\",\n        \"end_time\": \"12:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 1\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"12:30\",\n        \"end_time\": \"13:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"13:00\",\n        \"end_time\": \"13:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"13:30\",\n        \"end_time\": \"14:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"14:00\",\n        \"end_time\": \"14:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"14:30\",\n        \"end_time\": \"15:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 2,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"15:00\",\n        \"end_time\": \"15:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"15:30\",\n        \"end_time\": \"16:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"16:00\",\n        \"end_time\": \"16:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"16:30\",\n        \"end_time\": \"17:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 2,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 2,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"17:00\",\n        \"end_time\": \"17:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"17:30\",\n        \"end_time\": \"18:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"18:00\",\n        \"end_time\": \"18:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"18:30\",\n        \"end_time\": \"19:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"19:00\",\n        \"end_time\": \"19:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"19:30\",\n        \"end_time\": \"20:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-17\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-18\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-19\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-20\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-21\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-22\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"Available\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-23\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"Closed\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a branch employee (own branch, next week)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/schedule?week_start=2026-10-25",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "schedule"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "{{provider_branch_id}}",
                              "description": "owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": false
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · بداية الأسبوع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"week_start\": \"2026-10-24\",\n    \"days\": [\n      {\n        \"date\": \"2026-10-24\",\n        \"day_name\": \"السبت\"\n      },\n      {\n        \"date\": \"2026-10-25\",\n        \"day_name\": \"الأحد\"\n      },\n      {\n        \"date\": \"2026-10-26\",\n        \"day_name\": \"الاثنين\"\n      },\n      {\n        \"date\": \"2026-10-27\",\n        \"day_name\": \"الثلاثاء\"\n      },\n      {\n        \"date\": \"2026-10-28\",\n        \"day_name\": \"الأربعاء\"\n      },\n      {\n        \"date\": \"2026-10-29\",\n        \"day_name\": \"الخميس\"\n      },\n      {\n        \"date\": \"2026-10-30\",\n        \"day_name\": \"الجمعة\"\n      }\n    ],\n    \"rows\": [\n      {\n        \"start_time\": \"08:00\",\n        \"end_time\": \"08:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"08:30\",\n        \"end_time\": \"09:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"09:00\",\n        \"end_time\": \"09:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"09:30\",\n        \"end_time\": \"10:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"10:00\",\n        \"end_time\": \"10:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 1,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"10:30\",\n        \"end_time\": \"11:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"11:00\",\n        \"end_time\": \"11:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 1,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 1,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"11:30\",\n        \"end_time\": \"12:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"12:00\",\n        \"end_time\": \"12:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"12:30\",\n        \"end_time\": \"13:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"13:00\",\n        \"end_time\": \"13:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"13:30\",\n        \"end_time\": \"14:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"14:00\",\n        \"end_time\": \"14:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"14:30\",\n        \"end_time\": \"15:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"15:00\",\n        \"end_time\": \"15:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"15:30\",\n        \"end_time\": \"16:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"16:00\",\n        \"end_time\": \"16:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"16:30\",\n        \"end_time\": \"17:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"17:00\",\n        \"end_time\": \"17:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"17:30\",\n        \"end_time\": \"18:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"18:00\",\n        \"end_time\": \"18:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"18:30\",\n        \"end_time\": \"19:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"19:00\",\n        \"end_time\": \"19:30\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      },\n      {\n        \"start_time\": \"19:30\",\n        \"end_time\": \"20:00\",\n        \"cells\": [\n          {\n            \"date\": \"2026-10-24\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-25\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-26\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-27\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-28\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-29\",\n            \"booked\": 0,\n            \"capacity\": 5,\n            \"status\": {\n              \"value\": \"available\",\n              \"label\": \"متاح\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          },\n          {\n            \"date\": \"2026-10-30\",\n            \"booked\": 0,\n            \"capacity\": 0,\n            \"status\": {\n              \"value\": \"closed\",\n              \"label\": \"مغلق\",\n              \"color\": \"#62748E\",\n              \"bg_color\": \"#F1F5F9\"\n            },\n            \"counts_by_status\": {\n              \"pending\": 0,\n              \"confirmed\": 0,\n              \"attended\": 0,\n              \"no_show\": 0\n            }\n          }\n        ]\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — owner of several branches must pick one (branch_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/schedule",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "schedule"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "{{provider_branch_id}}",
                              "description": "owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": false
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · بداية الأسبوع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل الفرع مطلوب.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"الحقل الفرع مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/schedule",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "schedule"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "{{provider_branch_id}}",
                              "description": "owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": false
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · بداية الأسبوع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/schedule",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "schedule"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "{{provider_branch_id}}",
                              "description": "owner: required when > 1 branch · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": false
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · بداية الأسبوع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "appointments-stats",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"stat cards\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"week_bookings\"); pm.expect(o).to.have.property(\"confirmed\"); pm.expect(o).to.have.property(\"scheduled_donors\"); pm.expect(o).to.have.property(\"available_slots\"); });",
                          "pm.test(\"scheduled donors\", () => { const o = pm.response.json().data.scheduled_donors; pm.expect(o).to.have.property(\"booked\"); pm.expect(o).to.have.property(\"capacity\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments/stats",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments",
                        "stats"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                          "disabled": true
                        },
                        {
                          "key": "week_start",
                          "value": "{{dm2}}",
                          "description": "optional · nullable|date_format:Y-m-d · الأسبوع",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nبطاقات أرقام المواعيد للأسبوع.\n\n## Screens\n- P21 Appointments v02 — البطاقات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `week_start` — optional · nullable|date_format:Y-m-d · الأسبوع · example: `2026-10-17`\n\n\n## Behaviour notes\n**Steps:**\n1. للأسبوع المحدد: إجمالي حجوزات الأسبوع، المؤكدة، المتبرعون المجدولون (محجوز/السعة)، الفترات المتاحة — أرقام حقيقية من السجلات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/stats?branch_id=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "stats"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · الأسبوع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"week_bookings\": 50,\n    \"confirmed\": 26,\n    \"scheduled_donors\": {\n      \"booked\": 39,\n      \"capacity\": 713\n    },\n    \"available_slots\": 106\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — all branches of the organization (owner)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/stats",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "stats"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · الأسبوع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"week_bookings\": 63,\n    \"confirmed\": 36,\n    \"scheduled_donors\": {\n      \"booked\": 51,\n      \"capacity\": 3090\n    },\n    \"available_slots\": 226\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (branch_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/stats?branch_id=99999",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "stats"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · الأسبوع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/stats",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "stats"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · الأسبوع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/stats",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "stats"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "week_start",
                              "value": "{{dm2}}",
                              "description": "optional · nullable|date_format:Y-m-d · الأسبوع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "appointments",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"booking rows (donor, blood type, status, buttons)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"donor\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"time\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"provider_appointment_id\", l[0].id); pm.environment.set(\"provider_appointment_id\", l[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                          "disabled": true
                        },
                        {
                          "key": "date",
                          "value": "{{d0}}",
                          "description": "optional · nullable|date_format:Y-m-d · اليوم",
                          "disabled": true
                        },
                        {
                          "key": "start_time",
                          "value": "09:30",
                          "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                          "disabled": true
                        },
                        {
                          "key": "status",
                          "value": "pending",
                          "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · النوع",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "BK-2610-021",
                          "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nحجوزات الفترة/البحث مع الأزرار.\n\n## Screens\n- P20 Appointments — الجدول الأسبوعي — provider (web) `224:7139`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — شبكة الفترات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- G-P17 درج حجوزات الفترة + تفاصيل الحجز (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- G-P07 بحث برمز الحجز أو رقم الهوية (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `date` — optional · nullable|date_format:Y-m-d · اليوم · example: `2026-10-19`\n- `start_time` — optional · nullable|date_format:H:i|required_with:date · الفترة · example: `09:30`\n- `status` — optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة · example: `pending`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · النوع · example: `1`\n- `search` — optional · nullable|string|max:50 · BK- / الهوية / الاسم · example: `BK-2610-021`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. حجوزات النطاق مع فلاتر `branch_id`, `date`, `start_time` (درج الخلية)، `status`, `donation_type_id`, `search` (BK- / رقم الهوية كامل / اسم المتبرع).\n2. كل صف: المتبرع (الاسم + DNR + هوية مقنّعة + `is_deleted_account`)، الفصيلة، النوع، الحالة، الوقت، المصدر، `action_buttons` الثابتة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (date, start_time, status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "optional · nullable|date_format:Y-m-d · اليوم",
                              "disabled": true
                            },
                            {
                              "key": "start_time",
                              "value": "09:30",
                              "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "BK-2610-021",
                              "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 461,\n        \"code\": \"BK-2610-105\",\n        \"donor\": {\n          \"id\": 151,\n          \"name\": \"رامي خالد الزهراني\",\n          \"donor_code\": \"DNR-00151\",\n          \"national_id_masked\": \"10******51\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-26\",\n        \"time\": \"10:30 ص\",\n        \"starts_at\": \"2026-10-26T10:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/461/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/461/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/461/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/461/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 460,\n        \"code\": \"BK-2610-104\",\n        \"donor\": {\n          \"id\": 150,\n          \"name\": \"ندى صالح السلمي\",\n          \"donor_code\": \"DNR-00150\",\n          \"national_id_masked\": \"10******50\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-25\",\n        \"time\": \"10:30 ص\",\n        \"starts_at\": \"2026-10-25T10:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/460/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/460/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/460/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/460/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 399,\n        \"code\": \"BK-2610-044\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-25\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 38,\n        \"code\": \"BK-2610-025\",\n        \"donor\": {\n          \"id\": 72,\n          \"name\": \"ريم سعود العتيبي\",\n          \"donor_code\": \"DNR-00072\",\n          \"national_id_masked\": \"10******72\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-24\",\n        \"time\": \"11:00 ص\",\n        \"starts_at\": \"2026-10-24T11:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/38/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/38/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/38/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/38/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"code\": \"BK-2610-009\",\n        \"donor\": {\n          \"id\": 43,\n          \"name\": \"أحمد فيصل الزهراني\",\n          \"donor_code\": \"DNR-00043\",\n          \"national_id_masked\": \"10******43\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-24\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-24T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/9/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/9/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/9/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/9/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 446,\n        \"code\": \"BK-2610-091\",\n        \"donor\": {\n          \"id\": 141,\n          \"name\": \"أمل محمد الحربي\",\n          \"donor_code\": \"DNR-00141\",\n          \"national_id_masked\": \"10******41\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"03:00 م\",\n        \"starts_at\": \"2026-10-22T15:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/446/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/446/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/446/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/446/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 445,\n        \"code\": \"BK-2610-090\",\n        \"donor\": {\n          \"id\": 140,\n          \"name\": \"مازن رائد الحارثي\",\n          \"donor_code\": \"DNR-00140\",\n          \"national_id_masked\": \"10******40\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"كريات حمراء\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"02:00 م\",\n        \"starts_at\": \"2026-10-22T14:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/445/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/445/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/445/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/445/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 444,\n        \"code\": \"BK-2610-089\",\n        \"donor\": {\n          \"id\": 139,\n          \"name\": \"ندى عبدالملك الفيفي\",\n          \"donor_code\": \"DNR-00139\",\n          \"national_id_masked\": \"10******39\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"01:00 م\",\n        \"starts_at\": \"2026-10-22T13:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/444/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/444/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/444/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/444/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 443,\n        \"code\": \"BK-2610-088\",\n        \"donor\": {\n          \"id\": 138,\n          \"name\": \"عفاف راشد الزهراني\",\n          \"donor_code\": \"DNR-00138\",\n          \"national_id_masked\": \"10******38\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"12:00 م\",\n        \"starts_at\": \"2026-10-22T12:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/443/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/443/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/443/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/443/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 442,\n        \"code\": \"BK-2610-087\",\n        \"donor\": {\n          \"id\": 137,\n          \"name\": \"إبراهيم مازن الجهني\",\n          \"donor_code\": \"DNR-00137\",\n          \"national_id_masked\": \"10******37\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"11:00 ص\",\n        \"starts_at\": \"2026-10-22T11:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/442/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/442/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/442/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/442/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"code\": \"BK-2610-004\",\n        \"donor\": {\n          \"id\": 38,\n          \"name\": \"نورة فهد السلمي\",\n          \"donor_code\": \"DNR-00038\",\n          \"national_id_masked\": \"10******38\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"10:30 ص\",\n        \"starts_at\": \"2026-10-22T10:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/4/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/4/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/4/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/4/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 37,\n        \"code\": \"BK-2610-024\",\n        \"donor\": {\n          \"id\": 71,\n          \"name\": \"طارق عمر الحازمي\",\n          \"donor_code\": \"DNR-00071\",\n          \"national_id_masked\": \"10******71\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-22T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/37/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/37/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/37/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/37/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 441,\n        \"code\": \"BK-2610-086\",\n        \"donor\": {\n          \"id\": 136,\n          \"name\": \"مريم عبدالعزيز المطيري\",\n          \"donor_code\": \"DNR-00136\",\n          \"national_id_masked\": \"10******36\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-22T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/441/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/441/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/441/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/441/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 440,\n        \"code\": \"BK-2610-085\",\n        \"donor\": {\n          \"id\": 135,\n          \"name\": \"سامي عبدالإله المالكي\",\n          \"donor_code\": \"DNR-00135\",\n          \"national_id_masked\": \"10******35\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"كريات حمراء\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-10-22T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/440/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/440/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/440/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/440/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 12,\n        \"code\": \"BK-2610-012\",\n        \"donor\": {\n          \"id\": 46,\n          \"name\": \"هيا أيمن الشهري\",\n          \"donor_code\": \"DNR-00046\",\n          \"national_id_masked\": \"10******46\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-22\",\n        \"time\": \"08:30 ص\",\n        \"starts_at\": \"2026-10-22T08:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/12/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/12/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/12/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/12/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 161,\n      \"last_page\": 11,\n      \"from\": 1,\n      \"to\": 15\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a slot drawer (date + start_time)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments?date=2026-10-19&start_time=09%3A00",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "optional · nullable|date_format:Y-m-d · اليوم",
                              "disabled": true
                            },
                            {
                              "key": "start_time",
                              "value": "09:30",
                              "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "BK-2610-021",
                              "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 10,\n        \"code\": \"BK-2610-010\",\n        \"donor\": {\n          \"id\": 44,\n          \"name\": \"سلطان سلطان المرواني\",\n          \"donor_code\": \"DNR-00044\",\n          \"national_id_masked\": \"10******44\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-19\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-10-19T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/10/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/10/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/10/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/10/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 419,\n        \"code\": \"BK-2610-064\",\n        \"donor\": {\n          \"id\": 114,\n          \"name\": \"فهد صالح المالكي\",\n          \"donor_code\": \"DNR-00114\",\n          \"national_id_masked\": \"10******14\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-19\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-10-19T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/419/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/419/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/419/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/419/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 2,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 2\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — search by BK- code",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments?search=BK-2610-044",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "optional · nullable|date_format:Y-m-d · اليوم",
                              "disabled": true
                            },
                            {
                              "key": "start_time",
                              "value": "09:30",
                              "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "BK-2610-021",
                              "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 399,\n        \"code\": \"BK-2610-044\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-25\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 1,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — search by full national id",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments?search=1012345678",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "optional · nullable|date_format:Y-m-d · اليوم",
                              "disabled": true
                            },
                            {
                              "key": "start_time",
                              "value": "09:30",
                              "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "BK-2610-021",
                              "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 399,\n        \"code\": \"BK-2610-044\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-10-25\",\n        \"time\": \"10:00 ص\",\n        \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/399/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 397,\n        \"code\": \"BK-2610-042\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"date\": \"2026-10-08\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-10-08T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/397/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/397/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/397/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/397/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/362\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 396,\n        \"code\": \"BK-2609-031\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-09-10\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-09-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/396/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/396/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/396/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/396/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/361\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 391,\n        \"code\": \"BK-2606-015\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-06-10\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-06-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/391/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/391/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/391/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/391/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/360\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 390,\n        \"code\": \"BK-2602-014\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2026-03-02\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2026-03-02T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/390/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/390/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/390/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/390/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/359\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 389,\n        \"code\": \"BK-2511-012\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2025-11-22\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-11-22T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/389/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/389/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/389/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/389/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/358\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 395,\n        \"code\": \"BK-2511-013\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2025-11-15\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2025-11-15T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/395/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/395/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/395/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/395/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 388,\n        \"code\": \"BK-2508-014\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2025-08-14\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-08-14T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/388/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/388/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/388/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/388/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/357\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 394,\n        \"code\": \"BK-2504-009\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2025-04-29\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2025-04-29T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/394/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/394/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/394/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/394/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 386,\n        \"code\": \"BK-2501-006\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2025-01-26\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2025-01-26T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/386/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/386/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/386/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/386/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/355\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 393,\n        \"code\": \"BK-2410-007\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2024-10-12\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2024-10-12T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"no_show\",\n          \"label\": \"لم يحضر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/393/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/393/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/393/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/393/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 384,\n        \"code\": \"BK-2407-005\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2024-07-10\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2024-07-10T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/384/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/384/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/384/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/384/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/353\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 392,\n        \"code\": \"BK-2403-005\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2024-03-25\",\n        \"time\": \"09:30 ص\",\n        \"starts_at\": \"2024-03-25T09:30:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"expired\",\n          \"label\": \"منتهي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/392/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/392/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/392/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/392/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/0\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 382,\n        \"code\": \"BK-2312-001\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2023-12-23\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2023-12-23T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/382/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/382/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/382/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/382/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/351\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 381,\n        \"code\": \"BK-2309-004\",\n        \"donor\": {\n          \"id\": 1,\n          \"name\": \"محمد أحمد القحطاني\",\n          \"donor_code\": \"DNR-00001\",\n          \"national_id_masked\": \"10******78\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"date\": \"2023-09-14\",\n        \"time\": \"09:00 ص\",\n        \"starts_at\": \"2023-09-14T09:00:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"confirm\",\n            \"label\": \"تأكيد\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/381/confirm\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"reject\",\n            \"label\": \"رفض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/381/reject\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"check_in\",\n            \"label\": \"تسجيل الحضور\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/381/check-in\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"no_show\",\n            \"label\": \"لم يحضر\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appointments/381/no-show\",\n            \"style\": \"secondary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"view_donation\",\n            \"label\": \"عرض التبرع\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/donations/350\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 16,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (date needs start_time, status)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments?date=2026-10-19&status=nope",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "optional · nullable|date_format:Y-m-d · اليوم",
                              "disabled": true
                            },
                            {
                              "key": "start_time",
                              "value": "09:30",
                              "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "BK-2610-021",
                              "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل وقت البداية مطلوب إذا توفّر التاريخ. (and 1 more error)\",\n  \"errors\": {\n    \"start_time\": [\n      \"الحقل وقت البداية مطلوب إذا توفّر التاريخ.\"\n    ],\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "optional · nullable|date_format:Y-m-d · اليوم",
                              "disabled": true
                            },
                            {
                              "key": "start_time",
                              "value": "09:30",
                              "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "BK-2610-021",
                              "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "optional · nullable|date_format:Y-m-d · اليوم",
                              "disabled": true
                            },
                            {
                              "key": "start_time",
                              "value": "09:30",
                              "description": "optional · nullable|date_format:H:i|required_with:date · الفترة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "pending",
                              "description": "optional · nullable|Rule::enum(AppointmentStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "BK-2610-021",
                              "description": "optional · nullable|string|max:50 · BK- / الهوية / الاسم",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "appointment-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"booking details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"donor\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"purpose\"); pm.expect(o).to.have.property(\"timeline\"); pm.expect(o).to.have.property(\"donation_id\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"the fixed panel buttons\", () => pm.expect(pm.response.json().data.action_buttons.map((b) => b.key)).to.eql([\"confirm\", \"reject\", \"check_in\", \"no_show\", \"view_donation\"]));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appointment_id}}",
                          "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل الحجز وسجله.\n\n## Screens\n- P20 Appointments — الجدول الأسبوعي — provider (web) `224:7139`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — شبكة الفترات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- G-P17 درج حجوزات الفترة + تفاصيل الحجز (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- P32 Donation Tracking / Confirmed (قبل الحضور — C10) — provider (web) `1886:17216`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17216&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17216&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments · example: `21`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppointmentResource` للموظف: المتبرع (الاسم، DNR، الجوال، الفصيلة، هوية مقنّعة)، النوع، الطبيعة، المصدر (+ النداء APL-)، الموعد، الحالة، `timeline` من `appointment_status_logs` (من/إلى/من فعل/السبب/الوقت)، نتيجة الأهلية المرتبطة (إن وُجدت)، `donation_id` بعد الحضور، `action_buttons`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | حجز خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — confirmed booking with its timeline",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"donor\": {\n      \"id\": 1,\n      \"name\": \"محمد أحمد القحطاني\",\n      \"donor_code\": \"DNR-00001\",\n      \"national_id_masked\": \"10******78\",\n      \"is_deleted_account\": false,\n      \"phone\": \"551234567\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"date\": \"2026-10-25\",\n    \"time\": \"10:00 ص\",\n    \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"مؤكد\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"appeal\": null,\n    \"eligibility\": {\n      \"result\": {\n        \"value\": \"eligible\",\n        \"label\": \"مؤهل\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      },\n      \"reason\": \"إجاباتك تشير إلى أنك مؤهل للتبرع حالياً. نشكرك على عطائك.\"\n    },\n    \"status_reason\": null,\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"المتبرع\",\n        \"reason\": null,\n        \"at\": \"2026-10-16T13:24:41+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"actor\": \"أسماء ماجد الرشيد\",\n        \"reason\": null,\n        \"at\": \"2026-10-16T15:15:41+00:00\"\n      }\n    ],\n    \"donation_id\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"تأكيد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"رفض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"تسجيل الحضور\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"لم يحضر\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/0\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — attended (donation_id + view_donation, owner)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 413,\n    \"code\": \"BK-2610-058\",\n    \"donor\": {\n      \"id\": 108,\n      \"name\": \"هيا وليد المالكي\",\n      \"donor_code\": \"DNR-00108\",\n      \"national_id_masked\": \"10******08\",\n      \"is_deleted_account\": false,\n      \"phone\": \"560000108\"\n    },\n    \"blood_type\": {\n      \"value\": \"B+\",\n      \"label\": \"B+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"date\": \"2026-10-18\",\n    \"time\": \"01:04 م\",\n    \"starts_at\": \"2026-10-18T13:04:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"status\": {\n      \"value\": \"attended\",\n      \"label\": \"حضر\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"appeal\": null,\n    \"eligibility\": null,\n    \"status_reason\": null,\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"المتبرع\",\n        \"reason\": null,\n        \"at\": \"2026-10-17T06:26:00+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"actor\": \"أسماء ماجد الرشيد\",\n        \"reason\": null,\n        \"at\": \"2026-10-17T09:59:00+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"to\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"actor\": \"أسماء ماجد الرشيد\",\n        \"reason\": null,\n        \"at\": \"2026-10-18T13:16:00+00:00\"\n      }\n    ],\n    \"donation_id\": 374,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"تأكيد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/413/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"رفض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/413/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"تسجيل الحضور\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/413/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"لم يحضر\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/413/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/374\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 399,\n    \"code\": \"BK-2610-044\",\n    \"donor\": {\n      \"id\": 1,\n      \"name\": \"محمد أحمد القحطاني\",\n      \"donor_code\": \"DNR-00001\",\n      \"national_id_masked\": \"10******78\",\n      \"is_deleted_account\": false,\n      \"phone\": \"551234567\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"date\": \"2026-10-25\",\n    \"time\": \"10:00 AM\",\n    \"starts_at\": \"2026-10-25T10:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"Confirmed\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"appeal\": null,\n    \"eligibility\": {\n      \"result\": {\n        \"value\": \"eligible\",\n        \"label\": \"Eligible\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      },\n      \"reason\": \"إجاباتك تشير إلى أنك مؤهل للتبرع حالياً. نشكرك على عطائك.\"\n    },\n    \"status_reason\": null,\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"Donor\",\n        \"reason\": null,\n        \"at\": \"2026-10-16T13:24:41+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"actor\": \"أسماء ماجد الرشيد\",\n        \"reason\": null,\n        \"at\": \"2026-10-16T15:15:41+00:00\"\n      }\n    ],\n    \"donation_id\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"Confirm\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"Reject\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"Check in\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"No-show\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/399/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"View donation\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/0\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — حجز خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "confirm-appointment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/appointments?status=pending&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => true); if (it) { pm.collectionVariables.set(\"provider_appointment_id\", it.id); pm.environment.set(\"provider_appointment_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"confirmed booking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"confirmed\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"confirmed\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments/{id}/confirm",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments",
                        "{id}",
                        "confirm"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appointment_id}}",
                          "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nتأكيد الحجز (لوحة البنك).\n\n## Screens\n- P20 Appointments — الجدول الأسبوعي — provider (web) `224:7139`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — شبكة الفترات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- G-P17 درج حجوزات الفترة + تفاصيل الحجز (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments · example: `21`\n\n\n## Behaviour notes\n**Steps:**\n1. تُنفّذ عبر `AppointmentStatusService::transition($appointment, <To>, actor: employee, reason?)` — يتحقق من خريطة `TRANSITIONS` + النطاق + القسم؛ يكتب `appointment_status_logs` و`actioned_by`؛ يرجع `AppointmentResource` بـ `action_buttons` المحدّثة (نفس المجموعة الثابتة: confirm · reject · check_in · no_show · view_donation).\n2. `lockForUpdate` + تحقق السعة (المؤكد لا يتجاوز السعة).\n3. يضبط `confirmed_at`.\n4. لو مرتبط بنداء: `appeals.confirmed_count++`, `counted_for_appeal=true` ثم فحص الاستيفاء (≥ المطلوب → fulfilled).\n5. SMS بالرمز `BK-` + العنوان (queued, base SMS service).\n\n**Status / state transitions:** `pending` → `confirmed`\n\n**Side effects (Laravel-first):**\n- `AppointmentConfirmed` event → `SendBookingConfirmationSms` (queued job) + notifications + `AppealCounterService::countConfirmed`.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appointment_confirmed` | المتبرع | تم تأكيد موعد التبرع / Appointment confirmed | تم تأكيد موعد تبرعك بنجاح. ننتظرك في :branch | appointment_id | U63 |\n| `appeal_response_confirmed` | صاحب النداء (مستخدم) | متبرع جديد لنداءك | تأكد موعد متبرع لنداءك :code (:count من :target) | appeal_id | U145 |\n| `appeal_fulfilled` | صاحب النداء | تم استيفاء الاحتياج | اكتمل العدد المطلوب لنداءك :code — شكراً للمتبرعين | appeal_id | U146 |\n| `provider_appeal_fulfilled` | موظفو appeals | اكتمال استجابات النداء | اكتملت استجابات النداء :code — :type :blood_type | appeal_id | P6 |\n\n> Postman: the pre-request picks a PENDING booking.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appointment.confirmed` → ar «تم تأكيد الحجز» / en \"Booking confirmed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | انتقال غير مسموح من الحالة الحالية | `appointment.invalid_transition` | لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية | This action is not allowed in the current status |\n| 404 | حجز خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — confirmed (SMS + notification queued)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/confirm",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "confirm"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تأكيد الحجز\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BK-2610-010\",\n    \"donor\": {\n      \"id\": 44,\n      \"name\": \"سلطان سلطان المرواني\",\n      \"donor_code\": \"DNR-00044\",\n      \"national_id_masked\": \"10******44\",\n      \"is_deleted_account\": false,\n      \"phone\": \"560000044\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"date\": \"2026-10-19\",\n    \"time\": \"09:00 ص\",\n    \"starts_at\": \"2026-10-19T09:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"استجابة لنداء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"مؤكد\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"eligibility\": null,\n    \"status_reason\": null,\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"المتبرع\",\n        \"reason\": null,\n        \"at\": \"2026-10-17T19:41:14+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"actor\": \"عبدالرحمن سعد الدوسري\",\n        \"reason\": null,\n        \"at\": \"2026-10-18T13:27:42+00:00\"\n      }\n    ],\n    \"donation_id\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"تأكيد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"رفض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"تسجيل الحضور\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"لم يحضر\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/0\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/confirm",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "confirm"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Booking confirmed\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BK-2610-010\",\n    \"donor\": {\n      \"id\": 44,\n      \"name\": \"سلطان سلطان المرواني\",\n      \"donor_code\": \"DNR-00044\",\n      \"national_id_masked\": \"10******44\",\n      \"is_deleted_account\": false,\n      \"phone\": \"560000044\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"date\": \"2026-10-19\",\n    \"time\": \"09:00 AM\",\n    \"starts_at\": \"2026-10-19T09:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"Appeal response\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"Confirmed\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"eligibility\": null,\n    \"status_reason\": null,\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"Donor\",\n        \"reason\": null,\n        \"at\": \"2026-10-17T19:41:14+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"actor\": \"عبدالرحمن سعد الدوسري\",\n        \"reason\": null,\n        \"at\": \"2026-10-18T13:27:42+00:00\"\n      }\n    ],\n    \"donation_id\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"Confirm\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"Reject\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"Check in\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"No-show\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"View donation\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/0\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — invalid_transition (already confirmed)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/confirm",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "confirm"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 404 — حجز خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/confirm",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "confirm"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/confirm",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "confirm"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/confirm",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "confirm"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "reject-appointment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/appointments?status=pending&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => true); if (it) { pm.collectionVariables.set(\"provider_appointment_id\", it.id); pm.environment.set(\"provider_appointment_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"rejected booking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"status_reason\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"rejected with the reason\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"rejected\"); pm.expect(d.status_reason).to.be.a(\"string\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments/{id}/reject",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments",
                        "{id}",
                        "reject"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appointment_id}}",
                          "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nرفض الحجز (لوحة البنك).\n\n## Screens\n- P20 Appointments — الجدول الأسبوعي — provider (web) `224:7139`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — شبكة الفترات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- G-P17 درج حجوزات الفترة + تفاصيل الحجز (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- G-P06 modal رفض الحجز (gap P-06) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments · example: `21`\n\n### Body (form-data)\n- `reason` — required · required|string|max:500 · سبب الرفض* · example: `لا تتوفر سعة في هذه الفترة بسبب حالة طارئة`\n\n\n## Behaviour notes\n**Steps:**\n1. تُنفّذ عبر `AppointmentStatusService::transition($appointment, <To>, actor: employee, reason?)` — يتحقق من خريطة `TRANSITIONS` + النطاق + القسم؛ يكتب `appointment_status_logs` و`actioned_by`؛ يرجع `AppointmentResource` بـ `action_buttons` المحدّثة (نفس المجموعة الثابتة: confirm · reject · check_in · no_show · view_donation).\n2. سبب إجباري ≤500 (modal P-06) → `status_reason`, `rejected_at`.\n3. يحرر السعة؛ النداء المرتبط يعيد فتح الـ cap.\n\n**Status / state transitions:** `pending` → `rejected`\n\n**Side effects (Laravel-first):**\n- Domain event per transition (`AppointmentConfirmed`/`Rejected`/`CheckedIn`/`NoShow`) → queued listeners send notifications/SMS + appeal counters.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appointment_rejected` | المتبرع | تعذّر تأكيد موعدك / Appointment not confirmed | اعتذر :branch عن موعدك: :reason | appointment_id | U63 |\n\n> Postman: the pre-request picks a PENDING booking.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appointment.rejected` → ar «تم رفض الحجز» / en \"Booking rejected\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | انتقال غير مسموح من الحالة الحالية | `appointment.invalid_transition` | لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية | This action is not allowed in the current status |\n| 404 | حجز خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "reason",
                          "value": "لا تتوفر سعة في هذه الفترة بسبب حالة طارئة",
                          "type": "text",
                          "description": "required · required|string|max:500 · سبب الرفض*"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — rejected with a reason",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/reject",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "reject"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "لا تتوفر سعة في هذه الفترة بسبب حالة طارئة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم رفض الحجز\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BK-2610-010\",\n    \"donor\": {\n      \"id\": 44,\n      \"name\": \"سلطان سلطان المرواني\",\n      \"donor_code\": \"DNR-00044\",\n      \"national_id_masked\": \"10******44\",\n      \"is_deleted_account\": false,\n      \"phone\": \"560000044\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"date\": \"2026-10-19\",\n    \"time\": \"09:00 ص\",\n    \"starts_at\": \"2026-10-19T09:00:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"استجابة لنداء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"status\": {\n      \"value\": \"rejected\",\n      \"label\": \"مرفوض\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"purpose\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"eligibility\": null,\n    \"status_reason\": \"لا تتوفر سعة في هذه الفترة بسبب حالة طارئة\",\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"المتبرع\",\n        \"reason\": null,\n        \"at\": \"2026-10-17T19:41:14+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"actor\": \"عبدالرحمن سعد الدوسري\",\n        \"reason\": \"لا تتوفر سعة في هذه الفترة بسبب حالة طارئة\",\n        \"at\": \"2026-10-18T13:27:42+00:00\"\n      }\n    ],\n    \"donation_id\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"تأكيد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"رفض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"تسجيل الحضور\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"لم يحضر\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/10/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/0\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/reject",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "reject"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل السبب مطلوب.\",\n  \"errors\": {\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — invalid_transition (only a pending booking)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/reject",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "reject"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "لا تتوفر سعة في هذه الفترة بسبب حالة طارئة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 404 — حجز خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/reject",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "reject"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "لا تتوفر سعة في هذه الفترة بسبب حالة طارئة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/reject",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "reject"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "لا تتوفر سعة في هذه الفترة بسبب حالة طارئة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/reject",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "reject"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "لا تتوفر سعة في هذه الفترة بسبب حالة طارئة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "check-in-appointment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/appointments?status=confirmed&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => o.date === today); if (it) { pm.collectionVariables.set(\"provider_appointment_id\", it.id); pm.environment.set(\"provider_appointment_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); if (!filled) pm.sendRequest({ url: base + \"demo/provider/fill/appointments\", method: \"POST\", header: auth }, () => go(1, true)); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"attended booking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"donation_id\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"attended + the donation was created\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"attended\"); pm.expect(d.donation_id).to.be.a(\"number\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments/{id}/check-in",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments",
                        "{id}",
                        "check-in"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appointment_id}}",
                          "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nتسجيل الحضور (لوحة البنك).\n\n## Screens\n- P20 Appointments — الجدول الأسبوعي — provider (web) `224:7139`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — شبكة الفترات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- G-P17 درج حجوزات الفترة + تفاصيل الحجز (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- G-P07 modal بيانات المتبرع + تأكيد الحضور (gap P-07) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- P33 Confirm «مؤكد → استلام التبرع» — provider (web) `1886:17694`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17694&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17694&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments · example: `21`\n\n\n## Behaviour notes\n**Steps:**\n1. تُنفّذ عبر `AppointmentStatusService::transition($appointment, <To>, actor: employee, reason?)` — يتحقق من خريطة `TRANSITIONS` + النطاق + القسم؛ يكتب `appointment_status_logs` و`actioned_by`؛ يرجع `AppointmentResource` بـ `action_buttons` المحدّثة (نفس المجموعة الثابتة: confirm · reject · check_in · no_show · view_donation).\n2. نفس اليوم فقط (± ساعات الفرع) وإلا 409.\n3. داخل transaction: `checked_in_at`، ينشئ `donations` (code DON-، `blood_type` snapshot، `source` من الحجز، `appeal_id`، `received_at`) + `donation_stage_logs(received, started_at)`.\n4. يرجع الحجز + `donation_id` → الواجهة تنتقل لتفاصيل التبرع (P34 «استلام التبرع»).\n5. C10: زر «إكمال المرحلة والانتقال» في P32 عند «مؤكد» = هذا الإجراء.\n\n**Status / state transitions:** `confirmed` → `attended` + إنشاء **Donation** (`in_progress@received`)\n\n**Side effects (Laravel-first):**\n- Domain event per transition (`AppointmentConfirmed`/`Rejected`/`CheckedIn`/`NoShow`) → queued listeners send notifications/SMS + appeal counters.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `donation_stage_updated` | المتبرع | تحديث حالة وحدة الدم / Blood unit update | وحدة الدم :code الآن في مرحلة :stage | donation_id, stage | U49 |\n\n> Postman: the pre-request picks a CONFIRMED booking of today; when an earlier run used them all it calls POST demo/provider/fill/appointments once and picks again, so the request can run again.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appointment.checked_in` → ar «تم تسجيل الحضور» / en \"Checked in\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | ليس يوم الموعد | `appointment.not_today` | لا يمكن تسجيل الحضور إلا في يوم الموعد | Check-in is only allowed on the appointment day |\n| 409 | انتقال غير مسموح من الحالة الحالية | `appointment.invalid_transition` | لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية | This action is not allowed in the current status |\n| 404 | حجز خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — checked in (the donation is created: donation_id)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/check-in",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "check-in"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تسجيل الحضور\",\n  \"data\": {\n    \"id\": 415,\n    \"code\": \"BK-2610-060\",\n    \"donor\": {\n      \"id\": 110,\n      \"name\": \"ماجد تركي الحربي\",\n      \"donor_code\": \"DNR-00110\",\n      \"national_id_masked\": \"10******10\",\n      \"is_deleted_account\": false,\n      \"phone\": \"560000110\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 2,\n      \"name\": \"صفائح دموية\"\n    },\n    \"date\": \"2026-10-18\",\n    \"time\": \"02:30 م\",\n    \"starts_at\": \"2026-10-18T14:30:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"status\": {\n      \"value\": \"attended\",\n      \"label\": \"حضر\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"appeal\": null,\n    \"eligibility\": null,\n    \"status_reason\": null,\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"المتبرع\",\n        \"reason\": null,\n        \"at\": \"2026-10-15T07:29:00+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"actor\": \"أسماء ماجد الرشيد\",\n        \"reason\": null,\n        \"at\": \"2026-10-15T10:12:00+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"to\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"actor\": \"أحمد محمد العمري\",\n        \"reason\": null,\n        \"at\": \"2026-10-18T13:27:43+00:00\"\n      }\n    ],\n    \"donation_id\": 380,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"تأكيد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"رفض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"تسجيل الحضور\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"لم يحضر\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/380\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — not_today",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/check-in",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "check-in"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تسجيل الحضور إلا في يوم الموعد\",\n  \"key\": \"not_today\"\n}"
                    },
                    {
                      "name": "❌ 409 — invalid_transition (a pending booking)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/check-in",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "check-in"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 404 — حجز خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/check-in",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "check-in"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/check-in",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "check-in"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/check-in",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "check-in"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "no-show-appointment",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/appointments?status=confirmed&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => new Date(o.starts_at) < new Date()); if (it) { pm.collectionVariables.set(\"provider_appointment_id\", it.id); pm.environment.set(\"provider_appointment_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); if (!filled) pm.sendRequest({ url: base + \"demo/provider/fill/appointments\", method: \"POST\", header: auth }, () => go(1, true)); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no-show booking\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"no_show\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"no_show\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appointments/{id}/no-show",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appointments",
                        "{id}",
                        "no-show"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appointment_id}}",
                          "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nلم يحضر (لوحة البنك).\n\n## Screens\n- P20 Appointments — الجدول الأسبوعي — provider (web) `224:7139`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-7139&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — شبكة الفترات — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- G-P17 درج حجوزات الفترة + تفاصيل الحجز (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- G-P08 زر «لم يحضر» (gap P-08) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appointments`\n\n## Parameters & fields\n### Path params\n- `id` — required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments · example: `21`\n\n\n## Behaviour notes\n**Steps:**\n1. تُنفّذ عبر `AppointmentStatusService::transition($appointment, <To>, actor: employee, reason?)` — يتحقق من خريطة `TRANSITIONS` + النطاق + القسم؛ يكتب `appointment_status_logs` و`actioned_by`؛ يرجع `AppointmentResource` بـ `action_buttons` المحدّثة (نفس المجموعة الثابتة: confirm · reject · check_in · no_show · view_donation).\n2. مسموح بعد بداية الفترة؛ يضبط `no_show_at`.\n3. لو محتسب لنداء: `confirmed_count--` (fulfilled → active).\n4. نفس الأثر يحدث تلقائياً نهاية اليوم (`MarkNoShowsJob` عند `no_show_run_at`).\n\n**Status / state transitions:** `confirmed` → `no_show`\n\n**Side effects (Laravel-first):**\n- Domain event per transition (`AppointmentConfirmed`/`Rejected`/`CheckedIn`/`NoShow`) → queued listeners send notifications/SMS + appeal counters.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appointment_no_show` | المتبرع | فاتك موعد التبرع / Missed appointment | لم يُسجَّل حضورك لموعد :date، يمكنك حجز موعد جديد | appointment_id | U62 |\n| `provider_appeal_status_changed` | موظفو appeals (لو عاد النداء نشطاً) | تحديث نداء | النداء :code أصبح :status | appeal_id | P6 |\n\n> Postman: the pre-request picks a CONFIRMED booking whose slot already started; when an earlier run used them all it calls POST demo/provider/fill/appointments once and picks again, so the request can run again.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appointment.no_show` → ar «تم تسجيل عدم الحضور» / en \"Marked no-show\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | الفترة لم تبدأ بعد | `appointment.slot_not_started` | لا يمكن تسجيل عدم الحضور قبل بداية الموعد | Cannot mark no-show before the slot starts |\n| 409 | انتقال غير مسموح من الحالة الحالية | `appointment.invalid_transition` | لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية | This action is not allowed in the current status |\n| 404 | حجز خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appointments` (`employee.section:appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appointments\"]}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — marked no-show (the slot started)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/no-show",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "no-show"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تسجيل عدم الحضور\",\n  \"data\": {\n    \"id\": 415,\n    \"code\": \"BK-2610-060\",\n    \"donor\": {\n      \"id\": 110,\n      \"name\": \"ماجد تركي الحربي\",\n      \"donor_code\": \"DNR-00110\",\n      \"national_id_masked\": \"10******10\",\n      \"is_deleted_account\": false,\n      \"phone\": \"560000110\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 2,\n      \"name\": \"صفائح دموية\"\n    },\n    \"date\": \"2026-10-18\",\n    \"time\": \"12:27 م\",\n    \"starts_at\": \"2026-10-18T12:27:43+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"status\": {\n      \"value\": \"no_show\",\n      \"label\": \"لم يحضر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"purpose\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"appeal\": null,\n    \"eligibility\": null,\n    \"status_reason\": null,\n    \"timeline\": [\n      {\n        \"from\": null,\n        \"to\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"actor\": \"المتبرع\",\n        \"reason\": null,\n        \"at\": \"2026-10-15T07:29:00+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"to\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"actor\": \"أسماء ماجد الرشيد\",\n        \"reason\": null,\n        \"at\": \"2026-10-15T10:12:00+00:00\"\n      },\n      {\n        \"from\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"to\": {\n          \"value\": \"no_show\",\n          \"label\": \"لم يحضر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"actor\": \"عبدالرحمن سعد الدوسري\",\n        \"reason\": null,\n        \"at\": \"2026-10-18T13:27:43+00:00\"\n      }\n    ],\n    \"donation_id\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"confirm\",\n        \"label\": \"تأكيد\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/confirm\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"reject\",\n        \"label\": \"رفض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/reject\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"check_in\",\n        \"label\": \"تسجيل الحضور\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/check-in\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"no_show\",\n        \"label\": \"لم يحضر\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appointments/415/no-show\",\n        \"style\": \"secondary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"view_donation\",\n        \"label\": \"عرض التبرع\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/donations/0\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — slot_not_started",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/no-show",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "no-show"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تسجيل عدم الحضور قبل بداية الموعد\",\n  \"key\": \"slot_not_started\"\n}"
                    },
                    {
                      "name": "❌ 409 — invalid_transition (a pending booking)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/no-show",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "no-show"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء على الحجز في حالته الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 404 — حجز خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/no-show",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "no-show"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/no-show",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "no-show"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appointments (employee.section:appointments)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appointments/{id}/no-show",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appointments",
                            "{id}",
                            "no-show"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appointment_id}}",
                              "description": "required · appointment in scope · الحجز · source: GET {{base_url}}provider/appointments"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `appointments` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/appointments",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الحجوزات على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appointments (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001824\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "donations",
              "description": "Flow `donations` — 5 endpoints (sprint 5). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "donations",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"unit rows (donor, blood type, source, stage n/7, status, buttons)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"donor\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"current_stage\"); pm.expect(o).to.have.property(\"stage_position\"); pm.expect(o).to.have.property(\"stage_progress_text\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated + count\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); pm.expect(o).to.have.property(\"meta\"); });",
                          "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"provider_donation_id\", l[0].id); pm.environment.set(\"provider_donation_id\", l[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/donations",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "donations"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                          "disabled": true
                        },
                        {
                          "key": "stage",
                          "value": "lab_testing",
                          "description": "optional · nullable|Rule::enum(DonationStage::class) · المرحلة",
                          "disabled": true
                        },
                        {
                          "key": "status",
                          "value": "in_progress",
                          "description": "optional · nullable|Rule::enum(DonationStatus::class) · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · النوع",
                          "disabled": true
                        },
                        {
                          "key": "source",
                          "value": "appeal",
                          "description": "optional · nullable|Rule::enum(DonationSource::class) · المصدر",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "DON-2610-009",
                          "description": "optional · nullable|string|max:50 · بحث",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة التبرعات ومراحلها.\n\n## Screens\n- P25 Donations list (اسم الإطار «Appointments v03») — provider (web) `379:66`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=379-66&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=379-66&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:donations`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `stage` — optional · nullable|Rule::enum(DonationStage::class) · المرحلة · example: `lab_testing`\n- `status` — optional · nullable|Rule::enum(DonationStatus::class) · الحالة · example: `in_progress`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · النوع · example: `1`\n- `source` — optional · nullable|Rule::enum(DonationSource::class) · المصدر · example: `appeal`\n- `search` — optional · nullable|string|max:50 · بحث · example: `DON-2610-009`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. تبرعات النطاق مع فلاتر: `branch_id`, `stage`, `status` (جارٍ/موقوف/مكتمل/تم الاستخدام)، `donation_type_id`, `source` (direct|appeal)، `search` (DON-/اسم المتبرع/DNR).\n2. `meta.count` = «8 تبرع».\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (stage, status, source) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `donations` (`employee.section:donations`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"donations\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "stage",
                              "value": "lab_testing",
                              "description": "optional · nullable|Rule::enum(DonationStage::class) · المرحلة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "in_progress",
                              "description": "optional · nullable|Rule::enum(DonationStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "appeal",
                              "description": "optional · nullable|Rule::enum(DonationSource::class) · المصدر",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "DON-2610-009",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 369,\n        \"code\": \"DON-2610-024\",\n        \"donor\": {\n          \"id\": 26,\n          \"name\": \"خالد سعد العنزي\",\n          \"initials\": \"خس\",\n          \"donor_code\": \"DNR-00026\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-18\",\n        \"current_stage\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"stage_position\": 1,\n        \"stage_progress_text\": \"1/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/369/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/369/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/369/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 376,\n        \"code\": \"DON-2610-031\",\n        \"donor\": {\n          \"id\": 110,\n          \"name\": \"دانة سعد السبيعي\",\n          \"initials\": \"دس\",\n          \"donor_code\": \"DNR-00110\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-18\",\n        \"current_stage\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"stage_position\": 1,\n        \"stage_progress_text\": \"1/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/376/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/376/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/376/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 1,\n        \"code\": \"DON-2610-001\",\n        \"donor\": {\n          \"id\": 20,\n          \"name\": \"محمد عبدالله العمري\",\n          \"initials\": \"مع\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"appeal\": {\n          \"id\": 1,\n          \"code\": \"APL-2608-001\"\n        },\n        \"donation_date\": \"2026-10-18\",\n        \"current_stage\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"stage_position\": 2,\n        \"stage_progress_text\": \"2/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/1/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/1/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/1/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 377,\n        \"code\": \"DON-2610-032\",\n        \"donor\": {\n          \"id\": 111,\n          \"name\": \"بدور إبراهيم العسيري\",\n          \"initials\": \"بإ\",\n          \"donor_code\": \"DNR-00111\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-18\",\n        \"current_stage\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"stage_position\": 1,\n        \"stage_progress_text\": \"1/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/377/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/377/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/377/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 375,\n        \"code\": \"DON-2610-030\",\n        \"donor\": {\n          \"id\": 106,\n          \"name\": \"عبدالله سامي المرواني\",\n          \"initials\": \"عس\",\n          \"donor_code\": \"DNR-00106\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-17\",\n        \"current_stage\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"stage_position\": 4,\n        \"stage_progress_text\": \"4/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/375/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/375/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/375/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"DON-2610-002\",\n        \"donor\": {\n          \"id\": 38,\n          \"name\": \"هدى بندر البقمي\",\n          \"initials\": \"هب\",\n          \"donor_code\": \"DNR-00038\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"appeal\": {\n          \"id\": 1,\n          \"code\": \"APL-2608-001\"\n        },\n        \"donation_date\": \"2026-10-17\",\n        \"current_stage\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"stage_position\": 1,\n        \"stage_progress_text\": \"1/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/2/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/2/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/2/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 374,\n        \"code\": \"DON-2610-029\",\n        \"donor\": {\n          \"id\": 105,\n          \"name\": \"مها بدر الحارثي\",\n          \"initials\": \"مب\",\n          \"donor_code\": \"DNR-00105\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-17\",\n        \"current_stage\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"stage_position\": 3,\n        \"stage_progress_text\": \"3/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/374/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/374/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/374/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 373,\n        \"code\": \"DON-2610-028\",\n        \"donor\": {\n          \"id\": 104,\n          \"name\": \"مها عمر المدني\",\n          \"initials\": \"مع\",\n          \"donor_code\": \"DNR-00104\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-17\",\n        \"current_stage\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"stage_position\": 4,\n        \"stage_progress_text\": \"4/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/373/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/373/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/373/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 366,\n        \"code\": \"DON-2610-021\",\n        \"donor\": {\n          \"id\": 23,\n          \"name\": \"نواف قاسم الشمري\",\n          \"initials\": \"نق\",\n          \"donor_code\": \"DNR-00023\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-17\",\n        \"current_stage\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"stage_position\": 3,\n        \"stage_progress_text\": \"3/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/366/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/366/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/366/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"code\": \"DON-2610-003\",\n        \"donor\": {\n          \"id\": 39,\n          \"name\": \"وليد عبدالملك الرشيدي\",\n          \"initials\": \"وع\",\n          \"donor_code\": \"DNR-00039\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"appeal\": {\n          \"id\": 1,\n          \"code\": \"APL-2608-001\"\n        },\n        \"donation_date\": \"2026-10-17\",\n        \"current_stage\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"stage_position\": 4,\n        \"stage_progress_text\": \"4/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/3/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/3/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/3/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 365,\n        \"code\": \"DON-2610-020\",\n        \"donor\": {\n          \"id\": 22,\n          \"name\": \"عبدالرحمن صالح الدوسري\",\n          \"initials\": \"عص\",\n          \"donor_code\": \"DNR-00022\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-16\",\n        \"current_stage\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"stage_position\": 3,\n        \"stage_progress_text\": \"3/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/365/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/365/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/365/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 367,\n        \"code\": \"DON-2610-022\",\n        \"donor\": {\n          \"id\": 24,\n          \"name\": \"بدر مطر الرشيدي\",\n          \"initials\": \"بم\",\n          \"donor_code\": \"DNR-00024\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"كريات حمراء\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-16\",\n        \"current_stage\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"stage_position\": 4,\n        \"stage_progress_text\": \"4/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/367/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/367/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/367/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 370,\n        \"code\": \"DON-2610-025\",\n        \"donor\": {\n          \"id\": 27,\n          \"name\": \"سلطان جابر المطيري\",\n          \"initials\": \"سج\",\n          \"donor_code\": \"DNR-00027\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-15\",\n        \"current_stage\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"stage_position\": 3,\n        \"stage_progress_text\": \"3/7\",\n        \"status\": {\n          \"value\": \"stopped\",\n          \"label\": \"موقوف\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/370/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/370/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/370/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 364,\n        \"code\": \"DON-2610-019\",\n        \"donor\": {\n          \"id\": 21,\n          \"name\": \"فيصل حمد القحطاني\",\n          \"initials\": \"فح\",\n          \"donor_code\": \"DNR-00021\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-15\",\n        \"current_stage\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"stage_position\": 5,\n        \"stage_progress_text\": \"5/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/364/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/364/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/364/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 368,\n        \"code\": \"DON-2610-023\",\n        \"donor\": {\n          \"id\": 25,\n          \"name\": \"راشد عواد الحربي\",\n          \"initials\": \"رع\",\n          \"donor_code\": \"DNR-00025\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"direct\",\n          \"label\": \"تبرع مباشر\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"appeal\": null,\n        \"donation_date\": \"2026-10-14\",\n        \"current_stage\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"stage_position\": 6,\n        \"stage_progress_text\": \"6/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/368/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/368/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/368/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 100,\n      \"last_page\": 7,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"count\": 100\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations?stage=lab_testing&status=in_progress&source=appeal",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "stage",
                              "value": "lab_testing",
                              "description": "optional · nullable|Rule::enum(DonationStage::class) · المرحلة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "in_progress",
                              "description": "optional · nullable|Rule::enum(DonationStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "appeal",
                              "description": "optional · nullable|Rule::enum(DonationSource::class) · المصدر",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "DON-2610-009",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 0,\n      \"last_page\": 1,\n      \"from\": null,\n      \"to\": null\n    },\n    \"meta\": {\n      \"count\": 0\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — filtered by search",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations?search=DON-2610-001",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "stage",
                              "value": "lab_testing",
                              "description": "optional · nullable|Rule::enum(DonationStage::class) · المرحلة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "in_progress",
                              "description": "optional · nullable|Rule::enum(DonationStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "appeal",
                              "description": "optional · nullable|Rule::enum(DonationSource::class) · المصدر",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "DON-2610-009",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"code\": \"DON-2610-001\",\n        \"donor\": {\n          \"id\": 20,\n          \"name\": \"محمد عبدالله العمري\",\n          \"initials\": \"مع\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"source\": {\n          \"value\": \"appeal\",\n          \"label\": \"استجابة لنداء\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"appeal\": {\n          \"id\": 1,\n          \"code\": \"APL-2608-001\"\n        },\n        \"donation_date\": \"2026-10-18\",\n        \"current_stage\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"stage_position\": 2,\n        \"stage_progress_text\": \"2/7\",\n        \"status\": {\n          \"value\": \"in_progress\",\n          \"label\": \"جارٍ\",\n          \"color\": \"#0EA5E9\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"advance\",\n            \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/1/advance\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"stop\",\n            \"label\": \"إيقاف التبرع\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/1/stop\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"record_usage\",\n            \"label\": \"تسجيل استخدام الوحدة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/donations/1/record-usage\",\n            \"style\": \"primary\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 1,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 1\n    },\n    \"meta\": {\n      \"count\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (stage, status, source)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations?stage=nope&status=nope&source=nope",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "stage",
                              "value": "lab_testing",
                              "description": "optional · nullable|Rule::enum(DonationStage::class) · المرحلة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "in_progress",
                              "description": "optional · nullable|Rule::enum(DonationStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "appeal",
                              "description": "optional · nullable|Rule::enum(DonationSource::class) · المصدر",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "DON-2610-009",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد المرحلة غير صالح. (and 2 more errors)\",\n  \"errors\": {\n    \"stage\": [\n      \"حقل المحدد المرحلة غير صالح.\"\n    ],\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ],\n    \"source\": [\n      \"حقل المحدد المصدر غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "stage",
                              "value": "lab_testing",
                              "description": "optional · nullable|Rule::enum(DonationStage::class) · المرحلة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "in_progress",
                              "description": "optional · nullable|Rule::enum(DonationStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "appeal",
                              "description": "optional · nullable|Rule::enum(DonationSource::class) · المصدر",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "DON-2610-009",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم donations (employee.section:donations) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"donations\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "stage",
                              "value": "lab_testing",
                              "description": "optional · nullable|Rule::enum(DonationStage::class) · المرحلة",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "in_progress",
                              "description": "optional · nullable|Rule::enum(DonationStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "appeal",
                              "description": "optional · nullable|Rule::enum(DonationSource::class) · المصدر",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "DON-2610-009",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"donations\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "donation-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"unit details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"donor\"); pm.expect(o).to.have.property(\"current_stage\"); pm.expect(o).to.have.property(\"next_stage\"); pm.expect(o).to.have.property(\"appointment\"); pm.expect(o).to.have.property(\"timeline\"); pm.expect(o).to.have.property(\"stop\"); pm.expect(o).to.have.property(\"usage\"); pm.expect(o).to.have.property(\"locked_text\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"nine steps: 2 booking states + 7 stages, colored states\", () => { const t = pm.response.json().data.timeline; pm.expect(t).to.have.length(9); pm.expect(t.filter((s) => s.group === \"booking\")).to.have.length(2); pm.expect(t.filter((s) => s.group === \"donation\")).to.have.length(7); t.forEach((s) => { pm.expect(s.state).to.have.property(\"color\"); pm.expect(s.state).to.have.property(\"bg_color\"); }); });",
                          "pm.test(\"the fixed panel buttons\", () => pm.expect(pm.response.json().data.action_buttons.map((b) => b.key)).to.eql([\"advance\", \"stop\", \"record_usage\"]));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/donations/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "donations",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_donation_id}}",
                          "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                        }
                      ]
                    },
                    "description": "## Purpose\nتتبع رحلة التبرع بأزرارها.\n\n## Screens\n- P32 Donation Tracking / Confirmed (C10) — provider (web) `1886:17216`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17216&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17216&scaling=scale-down&content-scaling=fixed)\n- P34 Stage: استلام التبرع — provider (web) `1886:17735`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17735&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17735&scaling=scale-down&content-scaling=fixed)\n- P35 Confirm → الفحص الأولي — provider (web) `1886:18230`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18230&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18230&scaling=scale-down&content-scaling=fixed)\n- P36 Stage: الفحص الأولي — provider (web) `1886:18271`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18271&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18271&scaling=scale-down&content-scaling=fixed)\n- P37 Confirm → اختبارات المختبر — provider (web) `1886:18771`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18771&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18771&scaling=scale-down&content-scaling=fixed)\n- P38 Stage: اختبارات المختبر — provider (web) `1886:18812`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18812&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18812&scaling=scale-down&content-scaling=fixed)\n- P39 Confirm → المعالجة والفصل — provider (web) `1886:19313`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19313&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19313&scaling=scale-down&content-scaling=fixed)\n- P40 Stage: المعالجة والفصل — provider (web) `1886:19354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19354&scaling=scale-down&content-scaling=fixed)\n- P41 Confirm → ضمان الجودة — provider (web) `1886:19856`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19856&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19856&scaling=scale-down&content-scaling=fixed)\n- P42 Stage: ضمان الجودة — provider (web) `1886:19897`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19897&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19897&scaling=scale-down&content-scaling=fixed)\n- P43 Confirm → التخزين — provider (web) `1886:20403`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20403&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20403&scaling=scale-down&content-scaling=fixed)\n- P44 Stage: التخزين — provider (web) `1886:20444`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20444&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20444&scaling=scale-down&content-scaling=fixed)\n- P45 Confirm → جاهز للاستخدام — provider (web) `1886:20954`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20954&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20954&scaling=scale-down&content-scaling=fixed)\n- P46 Stage: جاهز للاستخدام — provider (web) `1886:20995`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20995&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20995&scaling=scale-down&content-scaling=fixed)\n- P47 Confirm Completed «اكتمال الرحلة» — provider (web) `1886:21508`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21508&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21508&scaling=scale-down&content-scaling=fixed)\n- P48 Donation Completed — provider (web) `1886:21550`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21550&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21550&scaling=scale-down&content-scaling=fixed)\n- G-P09 بانر الإيقاف (gap P-09) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:donations`\n\n## Parameters & fields\n### Path params\n- `id` — required · donation in scope · التبرع · source: GET {{base_url}}provider/donations · example: `9`\n\n\n## Behaviour notes\n**Steps:**\n1. C10: `timeline` = حالتا **الحجز** (قيد الانتظار/مؤكد من `appointment_status_logs`) + **7 مراحل** التبرع (من `donation_stage_logs`: started/completed/by/notes) = «ملخص المراحل 9».\n2. `current_stage`, `next_stage`, المتبرع + DNR، الفصيلة، النوع، التاريخ، المصدر (+ رقم النداء)، `stop` (النوع، السبب، الموظف، الوقت، مؤقت/دائم + التاريخ) أو `usage` (الوقت، الملاحظات، الموظف).\n3. `locked_text` = «لا يمكن إجراء أي تعديلات على رحلة مكتملة» عند completed/used.\n4. `action_buttons`: `advance` (label يتغير عند جاهز للاستخدام) · `stop` · `record_usage`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | تبرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `donations` (`employee.section:donations`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"donations\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"DON-2610-001\",\n    \"donor\": {\n      \"id\": 20,\n      \"name\": \"محمد عبدالله العمري\",\n      \"initials\": \"مع\",\n      \"donor_code\": \"DNR-00020\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"استجابة لنداء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"donation_date\": \"2026-10-18\",\n    \"current_stage\": {\n      \"value\": \"initial_screening\",\n      \"label\": \"الفحص الأولي\"\n    },\n    \"stage_position\": 2,\n    \"stage_progress_text\": \"2/7\",\n    \"status\": {\n      \"value\": \"in_progress\",\n      \"label\": \"جارٍ\",\n      \"color\": \"#0EA5E9\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"appointment\": {\n      \"id\": 1,\n      \"code\": \"BK-2610-001\"\n    },\n    \"next_stage\": {\n      \"value\": \"lab_testing\",\n      \"label\": \"اختبارات المختبر\"\n    },\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-15T21:48:02+00:00\",\n        \"by\": \"المتبرع\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-16T02:05:02+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-18T14:02:00+00:00\",\n        \"completed_at\": \"2026-10-18T14:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"قيد التنفيذ\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"started_at\": \"2026-10-18T14:12:00+00:00\",\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"جاهز للاستخدام\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      }\n    ],\n    \"stop\": null,\n    \"usage\": null,\n    \"locked_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"إيقاف التبرع\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"تسجيل استخدام الوحدة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 361,\n    \"code\": \"DON-2609-030\",\n    \"donor\": {\n      \"id\": 1,\n      \"name\": \"محمد أحمد القحطاني\",\n      \"initials\": \"مأ\",\n      \"donor_code\": \"DNR-00001\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"donation_date\": \"2026-09-10\",\n    \"current_stage\": {\n      \"value\": \"initial_screening\",\n      \"label\": \"Initial screening\"\n    },\n    \"stage_position\": 2,\n    \"stage_progress_text\": \"2/7\",\n    \"status\": {\n      \"value\": \"stopped\",\n      \"label\": \"Stopped\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"appointment\": {\n      \"id\": 396,\n      \"code\": \"BK-2609-030\"\n    },\n    \"next_stage\": {\n      \"value\": \"lab_testing\",\n      \"label\": \"Lab testing\"\n    },\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-09-07T01:55:00+00:00\",\n        \"by\": \"Donor\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-09-07T06:06:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"Donation received\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-09-10T09:04:00+00:00\",\n        \"completed_at\": \"2026-09-10T09:14:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"Initial screening\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"In progress\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"started_at\": \"2026-09-10T09:14:00+00:00\",\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"Lab testing\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"Processing & separation\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"Quality assurance\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"Storage\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"Ready for use\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      }\n    ],\n    \"stop\": {\n      \"stop_type\": {\n        \"value\": \"donor_deferred\",\n        \"label\": \"Donor deferred\"\n      },\n      \"deferral_type\": {\n        \"value\": \"temporary\",\n        \"label\": \"Temporary until date\"\n      },\n      \"deferred_until\": \"2026-09-28\",\n      \"reason\": \"ارتفاع مؤقت في ضغط الدم\",\n      \"notes\": null,\n      \"by\": \"خالد فهد السبيعي\",\n      \"at\": \"2026-09-10T09:43:00+00:00\"\n    },\n    \"usage\": null,\n    \"locked_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"Complete the stage and move to the next\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/361/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"Stop the donation\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/361/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"Record unit usage\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/361/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — completed unit (record usage available)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 360,\n    \"code\": \"DON-2606-013\",\n    \"donor\": {\n      \"id\": 1,\n      \"name\": \"محمد أحمد القحطاني\",\n      \"initials\": \"مأ\",\n      \"donor_code\": \"DNR-00001\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"donation_date\": \"2026-06-10\",\n    \"current_stage\": {\n      \"value\": \"ready_for_use\",\n      \"label\": \"جاهز للاستخدام\"\n    },\n    \"stage_position\": 7,\n    \"stage_progress_text\": \"7/7\",\n    \"status\": {\n      \"value\": \"completed\",\n      \"label\": \"مكتمل\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"appointment\": {\n      \"id\": 391,\n      \"code\": \"BK-2606-015\"\n    },\n    \"next_stage\": null,\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-06-07T00:04:00+00:00\",\n        \"by\": \"المتبرع\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-06-07T01:56:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:12:00+00:00\",\n        \"completed_at\": \"2026-06-10T09:22:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:22:00+00:00\",\n        \"completed_at\": \"2026-06-10T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:52:00+00:00\",\n        \"completed_at\": \"2026-06-11T11:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": \"نتائج الفحوصات سليمة\"\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-11T11:12:00+00:00\",\n        \"completed_at\": \"2026-06-12T11:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-12T11:12:00+00:00\",\n        \"completed_at\": \"2026-06-13T10:32:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-13T10:32:00+00:00\",\n        \"completed_at\": \"2026-06-14T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"جاهز للاستخدام\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-14T09:52:00+00:00\",\n        \"completed_at\": \"2026-06-14T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      }\n    ],\n    \"stop\": null,\n    \"usage\": null,\n    \"locked_text\": \"لا يمكن إجراء أي تعديلات على رحلة مكتملة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"إكمال المرحلة الأخيرة وإغلاق الرحلة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"إيقاف التبرع\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"تسجيل استخدام الوحدة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — تبرع خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم donations (employee.section:donations) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"donations\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"donations\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "advance-donation",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/donations?status=in_progress&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => true); if (it) { pm.collectionVariables.set(\"provider_donation_id\", it.id); pm.environment.set(\"provider_donation_id\", it.id); { const h = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const root = pm.variables.replaceIn(\"{{base_url}}\"); pm.sendRequest({ url: root + \"provider/donations/\" + it.id, method: \"GET\", header: h }, (e1, r1) => { if (e1) return; const d = r1.json().data; pm.sendRequest({ url: root + \"provider/inventory?branch_id=\" + d.branch.id + \"&donation_type_id=\" + d.donation_type.id, method: \"GET\", header: h }, (e2, r2) => { if (e2) return; const card = r2.json().data.stocks.find((s) => s.blood_type.value === d.blood_type.value); pm.collectionVariables.set(\"stock_before\", card.quantity); }); }); } return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"advanced unit\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"current_stage\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"timeline\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"moved forward or closed the journey\", () => { const d = pm.response.json().data; pm.expect([\"in_progress\", \"completed\"]).to.include(d.status.value); if (d.status.value === \"completed\") pm.expect(d.locked_text).to.be.a(\"string\"); });",
                          "pm.test(\"closing the journey adds one bag to the stock\", () => { const d = pm.response.json().data; if (d.status.value !== \"completed\") return; const before = Number(pm.collectionVariables.get(\"stock_before\")); const q = d.donation_type ? \"?branch_id=\" + d.branch.id + \"&donation_type_id=\" + d.donation_type.id : \"\"; pm.sendRequest({ url: pm.variables.replaceIn(\"{{base_url}}provider/inventory\") + q, method: \"GET\", header: { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") } }, (err, res) => { pm.test(\"stock + 1\", () => { const card = res.json().data.stocks.find((s) => s.blood_type.value === d.blood_type.value); pm.expect(card.quantity).to.eql(before + 1); }); }); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/donations/{id}/advance",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "donations",
                        "{id}",
                        "advance"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_donation_id}}",
                          "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                        }
                      ]
                    },
                    "description": "## Purpose\nنقل التبرع للمرحلة التالية (أو إغلاق الرحلة).\n\n## Screens\n- P34 Stage: استلام التبرع — provider (web) `1886:17735`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17735&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17735&scaling=scale-down&content-scaling=fixed)\n- P35 Confirm → الفحص الأولي — provider (web) `1886:18230`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18230&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18230&scaling=scale-down&content-scaling=fixed)\n- P36 Stage: الفحص الأولي — provider (web) `1886:18271`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18271&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18271&scaling=scale-down&content-scaling=fixed)\n- P37 Confirm → اختبارات المختبر — provider (web) `1886:18771`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18771&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18771&scaling=scale-down&content-scaling=fixed)\n- P38 Stage: اختبارات المختبر — provider (web) `1886:18812`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18812&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18812&scaling=scale-down&content-scaling=fixed)\n- P39 Confirm → المعالجة والفصل — provider (web) `1886:19313`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19313&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19313&scaling=scale-down&content-scaling=fixed)\n- P40 Stage: المعالجة والفصل — provider (web) `1886:19354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19354&scaling=scale-down&content-scaling=fixed)\n- P41 Confirm → ضمان الجودة — provider (web) `1886:19856`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19856&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19856&scaling=scale-down&content-scaling=fixed)\n- P42 Stage: ضمان الجودة — provider (web) `1886:19897`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19897&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19897&scaling=scale-down&content-scaling=fixed)\n- P43 Confirm → التخزين — provider (web) `1886:20403`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20403&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20403&scaling=scale-down&content-scaling=fixed)\n- P44 Stage: التخزين — provider (web) `1886:20444`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20444&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20444&scaling=scale-down&content-scaling=fixed)\n- P45 Confirm → جاهز للاستخدام — provider (web) `1886:20954`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20954&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20954&scaling=scale-down&content-scaling=fixed)\n- P46 Stage: جاهز للاستخدام — provider (web) `1886:20995`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20995&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20995&scaling=scale-down&content-scaling=fixed)\n- P47 Confirm Completed «اكتمال الرحلة» — provider (web) `1886:21508`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21508&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21508&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:donations`\n\n## Parameters & fields\n### Path params\n- `id` — required · donation in scope · التبرع · source: GET {{base_url}}provider/donations · example: `9`\n\n### Body (form-data)\n- `notes` — optional · nullable|string|max:500 · ملاحظات اختيارية (modal الانتقال) · example: `العلامات الحيوية سليمة`\n\n\n## Behaviour notes\n**Steps:**\n1. forward-only، مرحلة واحدة كل مرة: يغلق مرحلة `current_stage` (`completed_at`, `completed_by`, `notes`) ويفتح التالية (`started_at`).\n2. من `storage` → `ready_for_use` تصبح الحالية (C11).\n3. عند `ready_for_use` («إكمال المرحلة الأخيرة وإغلاق الرحلة» — P46/P47): يغلقها و`status=completed`, `completed_at` + **inventory +1** (`addition`, reason «تبرع مكتمل DON-xxx», source=Donation) + تحديث عدّادات/أوسمة المتبرع + بدء فترة الانتظار + إعادة تقييم حدود المخزون.\n4. يرجع `DonationResource` + رسالة.\n\n**Business rules / constraints:**\n- completed/used/stopped → 409 `donation.locked`.\n- «سيُحدَّث تطبيق المتبرع تلقائياً فور التأكيد» = إشعار `donation_stage_updated`.\n\n**Status / state transitions:** `in_progress@S` → `in_progress@S+1`; `in_progress@ready_for_use` → `completed` (`DonationStage`/`DonationStatus`).\n\n**Side effects (Laravel-first):**\n- `DonationStageAdvanced` / `DonationCompleted` events → queued notifications; `InventoryService::record(addition)` inside the same transaction; `StockLevelMonitor` (may clear alert).\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `donation_stage_updated` | المتبرع | تحديث حالة وحدة الدم / Blood unit update | وحدة الدم :code الآن في مرحلة :stage | donation_id, stage | U49 |\n| `donation_completed` | المتبرع (عند إغلاق الرحلة) | وحدة دمك جاهزة للاستخدام / Your unit is ready | اكتملت الفحوصات المخبرية لوحدة الدم الخاصة بتبرعك. الوحدة الآن جاهزة للاستخدام. رقم الوحدة: :code | donation_id | U49 |\n\n> Postman: the pre-request picks a unit that is still IN PROGRESS (a completed / used / stopped unit answers 409) and reads the stock of its blood type before the click.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/donation.stage_advanced` → ar «تم إكمال المرحلة والانتقال للتالية بنجاح — تم إشعار المتبرع تلقائياً عبر التطبيق» / en \"Stage completed — donor notified\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | رحلة مكتملة/موقوفة | `donation.locked` | لا يمكن إجراء أي تعديلات على رحلة مكتملة | A completed journey can't be modified |\n| 422 | فشل التحقق (notes) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | تبرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `donations` (`employee.section:donations`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"donations\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "notes",
                          "value": "العلامات الحيوية سليمة",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات اختيارية (modal الانتقال)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "notes",
                              "value": "العلامات الحيوية سليمة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إكمال المرحلة والانتقال للتالية بنجاح — تم إشعار المتبرع تلقائياً عبر التطبيق\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"DON-2610-001\",\n    \"donor\": {\n      \"id\": 20,\n      \"name\": \"محمد عبدالله العمري\",\n      \"initials\": \"مع\",\n      \"donor_code\": \"DNR-00020\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"استجابة لنداء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"donation_date\": \"2026-10-18\",\n    \"current_stage\": {\n      \"value\": \"lab_testing\",\n      \"label\": \"اختبارات المختبر\"\n    },\n    \"stage_position\": 3,\n    \"stage_progress_text\": \"3/7\",\n    \"status\": {\n      \"value\": \"in_progress\",\n      \"label\": \"جارٍ\",\n      \"color\": \"#0EA5E9\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"appointment\": {\n      \"id\": 1,\n      \"code\": \"BK-2610-001\"\n    },\n    \"next_stage\": {\n      \"value\": \"processing\",\n      \"label\": \"المعالجة والفصل\"\n    },\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-15T21:48:02+00:00\",\n        \"by\": \"المتبرع\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-16T02:05:02+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-18T14:02:00+00:00\",\n        \"completed_at\": \"2026-10-18T14:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-18T14:12:00+00:00\",\n        \"completed_at\": \"2026-10-18T14:28:40+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": \"العلامات الحيوية سليمة\"\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"قيد التنفيذ\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"started_at\": \"2026-10-18T14:28:40+00:00\",\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"جاهز للاستخدام\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      }\n    ],\n    \"stop\": null,\n    \"usage\": null,\n    \"locked_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"إيقاف التبرع\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"تسجيل استخدام الوحدة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Stage completed — donor notified\",\n  \"data\": {\n    \"id\": 365,\n    \"code\": \"DON-2610-020\",\n    \"donor\": {\n      \"id\": 22,\n      \"name\": \"عبدالرحمن صالح الدوسري\",\n      \"initials\": \"عص\",\n      \"donor_code\": \"DNR-00022\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"Plasma\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"donation_date\": \"2026-10-16\",\n    \"current_stage\": {\n      \"value\": \"processing\",\n      \"label\": \"Processing & separation\"\n    },\n    \"stage_position\": 4,\n    \"stage_progress_text\": \"4/7\",\n    \"status\": {\n      \"value\": \"in_progress\",\n      \"label\": \"In progress\",\n      \"color\": \"#0EA5E9\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"appointment\": {\n      \"id\": 401,\n      \"code\": \"BK-2610-047\"\n    },\n    \"next_stage\": {\n      \"value\": \"quality_assurance\",\n      \"label\": \"Quality assurance\"\n    },\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-11T10:42:00+00:00\",\n        \"by\": \"Donor\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-11T14:09:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"Donation received\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-16T14:08:00+00:00\",\n        \"completed_at\": \"2026-10-16T14:18:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"Initial screening\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-16T14:18:00+00:00\",\n        \"completed_at\": \"2026-10-16T14:48:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"Lab testing\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-16T14:48:00+00:00\",\n        \"completed_at\": \"2026-10-18T14:28:40+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"Processing & separation\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"In progress\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"started_at\": \"2026-10-18T14:28:40+00:00\",\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"Quality assurance\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"Storage\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"Ready for use\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      }\n    ],\n    \"stop\": null,\n    \"usage\": null,\n    \"locked_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"Complete the stage and move to the next\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/365/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"Stop the donation\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/365/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"Record unit usage\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/365/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — closing the journey (+1 in the stock)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "notes",
                              "value": "الوحدة جاهزة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إكمال المرحلة الأخيرة وإغلاق الرحلة بنجاح — تمت إضافة الوحدة إلى المخزون\",\n  \"data\": {\n    \"id\": 371,\n    \"code\": \"DON-2610-026\",\n    \"donor\": {\n      \"id\": 28,\n      \"name\": \"ماجد فهد البقمي\",\n      \"initials\": \"مف\",\n      \"donor_code\": \"DNR-00028\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"B+\",\n      \"label\": \"B+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"donation_date\": \"2026-10-13\",\n    \"current_stage\": {\n      \"value\": \"ready_for_use\",\n      \"label\": \"جاهز للاستخدام\"\n    },\n    \"stage_position\": 7,\n    \"stage_progress_text\": \"7/7\",\n    \"status\": {\n      \"value\": \"completed\",\n      \"label\": \"مكتمل\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"appointment\": {\n      \"id\": 407,\n      \"code\": \"BK-2610-053\"\n    },\n    \"next_stage\": null,\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-12T06:33:00+00:00\",\n        \"by\": \"المتبرع\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-12T07:04:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-13T07:37:00+00:00\",\n        \"completed_at\": \"2026-10-13T07:47:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-13T07:47:00+00:00\",\n        \"completed_at\": \"2026-10-13T08:17:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-13T08:17:00+00:00\",\n        \"completed_at\": \"2026-10-14T09:37:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": \"نتائج الفحوصات سليمة\"\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-14T09:37:00+00:00\",\n        \"completed_at\": \"2026-10-15T09:37:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-15T09:37:00+00:00\",\n        \"completed_at\": \"2026-10-16T08:57:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-16T08:57:00+00:00\",\n        \"completed_at\": \"2026-10-17T08:17:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"جاهز للاستخدام\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-17T08:17:00+00:00\",\n        \"completed_at\": \"2026-10-18T14:28:40+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": \"الوحدة جاهزة\"\n      }\n    ],\n    \"stop\": null,\n    \"usage\": null,\n    \"locked_text\": \"لا يمكن إجراء أي تعديلات على رحلة مكتملة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"إكمال المرحلة الأخيرة وإغلاق الرحلة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/371/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"إيقاف التبرع\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/371/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"تسجيل استخدام الوحدة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/371/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — advance a completed donation",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن إجراء أي تعديلات على رحلة مكتملة\",\n  \"key\": \"locked\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (notes)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "notes",
                              "value": "ننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننننن",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يجب ان يكون طول حقل الملاحظات اكبر من 500 حروفٍ/حرفًا.\",\n  \"errors\": {\n    \"notes\": [\n      \"لا يجب ان يكون طول حقل الملاحظات اكبر من 500 حروفٍ/حرفًا.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — تبرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم donations (employee.section:donations) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"donations\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/advance",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "advance"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"donations\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "stop-donation",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/donations?status=in_progress&stage=initial_screening&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => true); if (it) { pm.collectionVariables.set(\"provider_donation_id\", it.id); pm.environment.set(\"provider_donation_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"stopped unit\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"stop\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"stopped, banner filled, every button off\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"stopped\"); [\"stop_type\", \"reason\", \"by\", \"at\"].forEach((k) => pm.expect(d.stop).to.have.property(k)); pm.expect(d.action_buttons.every((b) => b.is_available === false)).to.eql(true); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/donations/{id}/stop",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "donations",
                        "{id}",
                        "stop"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_donation_id}}",
                          "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                        }
                      ]
                    },
                    "description": "## Purpose\nإيقاف التبرع (استبعاد/رفض وحدة).\n\n## Screens\n- G-P09 modal إيقاف التبرع (gap P-09) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- P34 Stage: استلام التبرع — provider (web) `1886:17735`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17735&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-17735&scaling=scale-down&content-scaling=fixed)\n- P36 Stage: الفحص الأولي — provider (web) `1886:18271`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18271&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18271&scaling=scale-down&content-scaling=fixed)\n- P38 Stage: اختبارات المختبر — provider (web) `1886:18812`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18812&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-18812&scaling=scale-down&content-scaling=fixed)\n- P40 Stage: المعالجة والفصل — provider (web) `1886:19354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19354&scaling=scale-down&content-scaling=fixed)\n- P42 Stage: ضمان الجودة — provider (web) `1886:19897`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19897&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-19897&scaling=scale-down&content-scaling=fixed)\n- P44 Stage: التخزين — provider (web) `1886:20444`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20444&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20444&scaling=scale-down&content-scaling=fixed)\n- P46 Stage: جاهز للاستخدام — provider (web) `1886:20995`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20995&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-20995&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:donations`\n\n## Parameters & fields\n### Path params\n- `id` — required · donation in scope · التبرع · source: GET {{base_url}}provider/donations · example: `9`\n\n### Body (form-data)\n- `stop_type` — required · required|Rule::enum(StopType::class) + allowed for current stage · نوع الإيقاف · source: GET {{base_url}}provider/lookups/stop-types · example: `donor_deferred`\n- `deferral_type` — required_if:stop_type,donor_deferred · nullable|required_if:stop_type,donor_deferred|Rule::enum(DeferralType::class) · مؤقت/دائم · example: `temporary`\n- `deferred_until` — required_if:deferral_type,temporary · nullable|required_if:deferral_type,temporary|date|after:today · حتى تاريخ · example: `2026-12-18`\n- `reason` — required · required|string|max:500 · السبب* · example: `انخفاض الهيموجلوبين`\n- `notes` — optional · nullable|string|max:1000 · ملاحظات · example: `يعاد الفحص بعد شهرين`\n\n\n## Behaviour notes\n**Steps:**\n1. `donor_deferred` مسموح فقط في `initial_screening` (لم يُسحب دم → **لا فترة انتظار**): يتطلب `deferral_type`؛ `temporary` + `deferred_until` → `users.deferred_until`، `permanent` → `users.permanently_deferred=true`.\n2. `unit_rejected` مسموح في `lab_testing`…`storage` (سُحب دم → فترة الانتظار تبدأ من `received_at`).\n3. يضبط `status=stopped`, `stopped_at`, `stop_type`, `deferral_type`, `deferred_until`, `stop_reason`, `stop_notes`, `stopped_by`.\n4. لا أثر على عدّ النداء (العدّ عند التأكيد).\n\n**Status / state transitions:** `in_progress@any` → `stopped`.\n\n**Side effects (Laravel-first):**\n- `DonationStopped` event → notification; deferral persisted on the user in the same transaction.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `donation_stopped` | المتبرع | لم يكتمل التبرع / Donation not completed | لم يكتمل التبرع — يرجى مراجعة المركز (+ «يمكنك التبرع بعد :date» عند المؤقت) | donation_id | U53 |\n\n> Postman: the pre-request picks an in-progress unit at initial_screening (the only stage that allows donor_deferred).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/donation.stopped` → ar «تم إيقاف التبرع» / en \"Donation stopped\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | نوع إيقاف غير مسموح في هذه المرحلة | `donation.stop_type_not_allowed` | نوع الإيقاف غير متاح في هذه المرحلة | This stop type is not allowed at this stage |\n| 422 | فشل التحقق (reason, deferral_type, deferred_until) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | رحلة مكتملة/موقوفة | `donation.locked` | لا يمكن إجراء أي تعديلات على رحلة مكتملة | A completed journey can't be modified |\n| 404 | تبرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `donations` (`employee.section:donations`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"donations\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "stop_type",
                          "value": "donor_deferred",
                          "type": "text",
                          "description": "required · required|Rule::enum(StopType::class) + allowed for current stage · نوع الإيقاف · source: GET {{base_url}}provider/lookups/stop-types"
                        },
                        {
                          "key": "deferral_type",
                          "value": "temporary",
                          "type": "text",
                          "description": "required_if:stop_type,donor_deferred · nullable|required_if:stop_type,donor_deferred|Rule::enum(DeferralType::class) · مؤقت/دائم"
                        },
                        {
                          "key": "deferred_until",
                          "value": "{{d60}}",
                          "type": "text",
                          "description": "required_if:deferral_type,temporary · nullable|required_if:deferral_type,temporary|date|after:today · حتى تاريخ"
                        },
                        {
                          "key": "reason",
                          "value": "انخفاض الهيموجلوبين",
                          "type": "text",
                          "description": "required · required|string|max:500 · السبب*"
                        },
                        {
                          "key": "notes",
                          "value": "يعاد الفحص بعد شهرين",
                          "type": "text",
                          "description": "optional · nullable|string|max:1000 · ملاحظات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "stop_type",
                              "value": "donor_deferred",
                              "type": "text"
                            },
                            {
                              "key": "deferral_type",
                              "value": "temporary",
                              "type": "text"
                            },
                            {
                              "key": "deferred_until",
                              "value": "2026-12-18",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "انخفاض الهيموجلوبين",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "يعاد الفحص بعد شهرين",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف التبرع\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"DON-2610-001\",\n    \"donor\": {\n      \"id\": 20,\n      \"name\": \"محمد عبدالله العمري\",\n      \"initials\": \"مع\",\n      \"donor_code\": \"DNR-00020\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"استجابة لنداء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"donation_date\": \"2026-10-18\",\n    \"current_stage\": {\n      \"value\": \"initial_screening\",\n      \"label\": \"الفحص الأولي\"\n    },\n    \"stage_position\": 2,\n    \"stage_progress_text\": \"2/7\",\n    \"status\": {\n      \"value\": \"stopped\",\n      \"label\": \"موقوف\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"appointment\": {\n      \"id\": 1,\n      \"code\": \"BK-2610-001\"\n    },\n    \"next_stage\": {\n      \"value\": \"lab_testing\",\n      \"label\": \"اختبارات المختبر\"\n    },\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-15T21:48:02+00:00\",\n        \"by\": \"المتبرع\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-16T02:05:02+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-18T14:02:00+00:00\",\n        \"completed_at\": \"2026-10-18T14:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"قيد التنفيذ\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"started_at\": \"2026-10-18T14:12:00+00:00\",\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"جاهز للاستخدام\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"لم يبدأ\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      }\n    ],\n    \"stop\": {\n      \"stop_type\": {\n        \"value\": \"donor_deferred\",\n        \"label\": \"استبعاد المتبرع\"\n      },\n      \"deferral_type\": {\n        \"value\": \"temporary\",\n        \"label\": \"مؤقت حتى تاريخ\"\n      },\n      \"deferred_until\": \"2026-12-18\",\n      \"reason\": \"انخفاض الهيموجلوبين\",\n      \"notes\": \"يعاد الفحص بعد شهرين\",\n      \"by\": \"خالد فهد السبيعي\",\n      \"at\": \"2026-10-18T14:28:40+00:00\"\n    },\n    \"usage\": null,\n    \"locked_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"إكمال المرحلة والانتقال للمرحلة التالية\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"إيقاف التبرع\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"تسجيل استخدام الوحدة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/1/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "stop_type",
                              "value": "unit_rejected",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "Infectious-disease screen out of range",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Donation stopped\",\n  \"data\": {\n    \"id\": 368,\n    \"code\": \"DON-2610-023\",\n    \"donor\": {\n      \"id\": 25,\n      \"name\": \"راشد عواد الحربي\",\n      \"initials\": \"رع\",\n      \"donor_code\": \"DNR-00025\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"donation_date\": \"2026-10-14\",\n    \"current_stage\": {\n      \"value\": \"storage\",\n      \"label\": \"Storage\"\n    },\n    \"stage_position\": 6,\n    \"stage_progress_text\": \"6/7\",\n    \"status\": {\n      \"value\": \"stopped\",\n      \"label\": \"Stopped\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"appointment\": {\n      \"id\": 404,\n      \"code\": \"BK-2610-050\"\n    },\n    \"next_stage\": {\n      \"value\": \"ready_for_use\",\n      \"label\": \"Ready for use\"\n    },\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-11T18:11:00+00:00\",\n        \"by\": \"Donor\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-10-11T23:01:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"Donation received\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-14T01:58:00+00:00\",\n        \"completed_at\": \"2026-10-14T02:08:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"Initial screening\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-14T02:08:00+00:00\",\n        \"completed_at\": \"2026-10-14T02:38:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"Lab testing\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-14T02:38:00+00:00\",\n        \"completed_at\": \"2026-10-15T03:58:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": \"نتائج الفحوصات سليمة\"\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"Processing & separation\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-15T03:58:00+00:00\",\n        \"completed_at\": \"2026-10-16T03:58:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"Quality assurance\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-10-16T03:58:00+00:00\",\n        \"completed_at\": \"2026-10-17T03:18:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"Storage\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"current\",\n          \"label\": \"In progress\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"started_at\": \"2026-10-17T03:18:00+00:00\",\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"Ready for use\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"pending\",\n          \"label\": \"Not started\",\n          \"color\": \"#C4C9D4\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"started_at\": null,\n        \"completed_at\": null,\n        \"by\": null,\n        \"notes\": null\n      }\n    ],\n    \"stop\": {\n      \"stop_type\": {\n        \"value\": \"unit_rejected\",\n        \"label\": \"Unit rejected\"\n      },\n      \"deferral_type\": null,\n      \"deferred_until\": null,\n      \"reason\": \"Infectious-disease screen out of range\",\n      \"notes\": null,\n      \"by\": \"خالد فهد السبيعي\",\n      \"at\": \"2026-10-18T14:28:40+00:00\"\n    },\n    \"usage\": null,\n    \"locked_text\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"Complete the stage and move to the next\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/368/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"Stop the donation\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/368/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"Record unit usage\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/368/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — نوع إيقاف غير مسموح في هذه المرحلة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "stop_type",
                              "value": "donor_deferred",
                              "type": "text"
                            },
                            {
                              "key": "deferral_type",
                              "value": "permanent",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"نوع الإيقاف غير متاح في هذه المرحلة\",\n  \"errors\": {\n    \"stop_type\": [\n      \"نوع الإيقاف غير متاح في هذه المرحلة\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (reason, deferral_type, deferred_until)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "stop_type",
                              "value": "donor_deferred",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل نوع الاستبعاد مطلوب في حال ما إذا كان نوع الإيقاف يساوي donor_deferred. (and 1 more error)\",\n  \"errors\": {\n    \"deferral_type\": [\n      \"الحقل نوع الاستبعاد مطلوب في حال ما إذا كان نوع الإيقاف يساوي donor_deferred.\"\n    ],\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — رحلة مكتملة/موقوفة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "stop_type",
                              "value": "unit_rejected",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن إجراء أي تعديلات على رحلة مكتملة\",\n  \"key\": \"locked\"\n}"
                    },
                    {
                      "name": "❌ 404 — تبرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "stop_type",
                              "value": "unit_rejected",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم donations (employee.section:donations) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"donations\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/stop",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "stop"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"donations\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "record-donation-usage",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/donations?status=completed&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => true); if (it) { pm.collectionVariables.set(\"provider_donation_id\", it.id); pm.environment.set(\"provider_donation_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"used unit\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"usage\"); pm.expect(o).to.have.property(\"locked_text\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"used + usage record\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"used\"); [\"at\", \"notes\", \"by\"].forEach((k) => pm.expect(d.usage).to.have.property(k)); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/donations/{id}/record-usage",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "donations",
                        "{id}",
                        "record-usage"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_donation_id}}",
                          "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                        }
                      ]
                    },
                    "description": "## Purpose\nتسجيل استخدام وحدة مكتملة (صرف تلقائي).\n\n## Screens\n- P48 Donation Completed — «تسجيل استخدام الوحدة» (gap P-10) — provider (web) `1886:21550`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21550&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1886-21550&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:donations`\n\n## Parameters & fields\n### Path params\n- `id` — required · donation in scope · التبرع · source: GET {{base_url}}provider/donations · example: `9`\n\n### Body (form-data)\n- `notes` — optional · nullable|string|max:500 · ملاحظات · example: `صُرفت لقسم الطوارئ`\n\n\n## Behaviour notes\n**Steps:**\n1. مسموح عند `completed` فقط.\n2. داخل transaction: **inventory −1** (`issue`, reason «استخدام الوحدة DON-xxx», source=Donation) — رصيد 0 → 409؛ `status=used`, `used_at`, `usage_notes`, `used_by`.\n3. إعادة تقييم حدود المخزون (قد يُطلق تنبيه منخفض/حرج).\n\n**Status / state transitions:** `completed` → `used`.\n\n**Side effects (Laravel-first):**\n- none.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `donation_used` | المتبرع | تم استخدام وحدة الدم / Your unit was used | تم استخدام وحدة الدم التي تبرعت بها. تبرعك ساهم في إنقاذ حياة مريض. رقم الوحدة: :code | donation_id | U51 |\n| `provider_stock_critical / provider_stock_low` | موظفو inventory (عند عبور الحد) | مخزون حرج / مخزون منخفض | مخزون فصيلة :blood_type (:type) وصل إلى مستوى حرج — :qty أكياس فقط | branch_id, blood_type | P49 |\n\n> Postman: the pre-request picks a COMPLETED unit.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/donation.usage_recorded` → ar «تم تسجيل استخدام الوحدة وصرفها من المخزون» / en \"Unit usage recorded and stock issued\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | ليس مكتملاً | `donation.not_completed` | لا يمكن تسجيل الاستخدام قبل اكتمال الرحلة | Usage can only be recorded after completion |\n| 409 | رصيد المخزون صفر | `inventory.insufficient` | الكمية المطلوب صرفها أكبر من الرصيد الحالي (:balance) | Quantity exceeds the current balance (:balance) |\n| 404 | تبرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `donations` (`employee.section:donations`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"donations\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "notes",
                          "value": "صُرفت لقسم الطوارئ",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/record-usage",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "record-usage"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "notes",
                              "value": "صُرفت لقسم الطوارئ",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تسجيل استخدام الوحدة وصرفها من المخزون\",\n  \"data\": {\n    \"id\": 360,\n    \"code\": \"DON-2606-013\",\n    \"donor\": {\n      \"id\": 1,\n      \"name\": \"محمد أحمد القحطاني\",\n      \"initials\": \"مأ\",\n      \"donor_code\": \"DNR-00001\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"تبرع مباشر\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"donation_date\": \"2026-06-10\",\n    \"current_stage\": {\n      \"value\": \"ready_for_use\",\n      \"label\": \"جاهز للاستخدام\"\n    },\n    \"stage_position\": 7,\n    \"stage_progress_text\": \"7/7\",\n    \"status\": {\n      \"value\": \"used\",\n      \"label\": \"تم الاستخدام\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"appointment\": {\n      \"id\": 391,\n      \"code\": \"BK-2606-015\"\n    },\n    \"next_stage\": null,\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-06-07T00:04:00+00:00\",\n        \"by\": \"المتبرع\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-06-07T01:56:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"استلام التبرع\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:12:00+00:00\",\n        \"completed_at\": \"2026-06-10T09:22:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"الفحص الأولي\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:22:00+00:00\",\n        \"completed_at\": \"2026-06-10T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"اختبارات المختبر\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:52:00+00:00\",\n        \"completed_at\": \"2026-06-11T11:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": \"نتائج الفحوصات سليمة\"\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"المعالجة والفصل\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-11T11:12:00+00:00\",\n        \"completed_at\": \"2026-06-12T11:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"ضمان الجودة\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-12T11:12:00+00:00\",\n        \"completed_at\": \"2026-06-13T10:32:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"التخزين\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-13T10:32:00+00:00\",\n        \"completed_at\": \"2026-06-14T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"جاهز للاستخدام\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"مكتمل\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-14T09:52:00+00:00\",\n        \"completed_at\": \"2026-06-14T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      }\n    ],\n    \"stop\": null,\n    \"usage\": {\n      \"at\": \"2026-10-18T14:28:40+00:00\",\n      \"notes\": \"صُرفت لقسم الطوارئ\",\n      \"by\": \"خالد فهد السبيعي\"\n    },\n    \"locked_text\": \"لا يمكن إجراء أي تعديلات على رحلة مكتملة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"إكمال المرحلة الأخيرة وإغلاق الرحلة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"إيقاف التبرع\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"تسجيل استخدام الوحدة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/record-usage",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "record-usage"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Unit usage recorded and stock issued\",\n  \"data\": {\n    \"id\": 360,\n    \"code\": \"DON-2606-013\",\n    \"donor\": {\n      \"id\": 1,\n      \"name\": \"محمد أحمد القحطاني\",\n      \"initials\": \"مأ\",\n      \"donor_code\": \"DNR-00001\",\n      \"is_deleted_account\": false\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"source\": {\n      \"value\": \"direct\",\n      \"label\": \"Direct donation\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"appeal\": null,\n    \"donation_date\": \"2026-06-10\",\n    \"current_stage\": {\n      \"value\": \"ready_for_use\",\n      \"label\": \"Ready for use\"\n    },\n    \"stage_position\": 7,\n    \"stage_progress_text\": \"7/7\",\n    \"status\": {\n      \"value\": \"used\",\n      \"label\": \"Used\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#DCFCE7\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"appointment\": {\n      \"id\": 391,\n      \"code\": \"BK-2606-015\"\n    },\n    \"next_stage\": null,\n    \"timeline\": [\n      {\n        \"key\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-06-07T00:04:00+00:00\",\n        \"by\": \"Donor\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\"\n        },\n        \"group\": \"booking\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"at\": \"2026-06-07T01:56:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"received\",\n          \"label\": \"Donation received\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:12:00+00:00\",\n        \"completed_at\": \"2026-06-10T09:22:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"initial_screening\",\n          \"label\": \"Initial screening\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:22:00+00:00\",\n        \"completed_at\": \"2026-06-10T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"lab_testing\",\n          \"label\": \"Lab testing\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-10T09:52:00+00:00\",\n        \"completed_at\": \"2026-06-11T11:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": \"نتائج الفحوصات سليمة\"\n      },\n      {\n        \"key\": {\n          \"value\": \"processing\",\n          \"label\": \"Processing & separation\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-11T11:12:00+00:00\",\n        \"completed_at\": \"2026-06-12T11:12:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"quality_assurance\",\n          \"label\": \"Quality assurance\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-12T11:12:00+00:00\",\n        \"completed_at\": \"2026-06-13T10:32:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"storage\",\n          \"label\": \"Storage\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-13T10:32:00+00:00\",\n        \"completed_at\": \"2026-06-14T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"ready_for_use\",\n          \"label\": \"Ready for use\"\n        },\n        \"group\": \"donation\",\n        \"state\": {\n          \"value\": \"done\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"started_at\": \"2026-06-14T09:52:00+00:00\",\n        \"completed_at\": \"2026-06-14T09:52:00+00:00\",\n        \"by\": \"خالد فهد السبيعي\",\n        \"notes\": null\n      }\n    ],\n    \"stop\": null,\n    \"usage\": {\n      \"at\": \"2026-10-18T14:28:40+00:00\",\n      \"notes\": null,\n      \"by\": \"خالد فهد السبيعي\"\n    },\n    \"locked_text\": \"A completed journey can't be modified\",\n    \"action_buttons\": [\n      {\n        \"key\": \"advance\",\n        \"label\": \"Complete the last stage and close the journey\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/advance\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"stop\",\n        \"label\": \"Stop the donation\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/stop\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"record_usage\",\n        \"label\": \"Record unit usage\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/donations/360/record-usage\",\n        \"style\": \"primary\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — ليس مكتملاً",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/record-usage",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "record-usage"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تسجيل الاستخدام قبل اكتمال الرحلة\",\n  \"key\": \"not_completed\"\n}"
                    },
                    {
                      "name": "❌ 409 — رصيد المخزون صفر",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/record-usage",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "record-usage"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الكمية المطلوب صرفها أكبر من الرصيد الحالي (0)\",\n  \"key\": \"insufficient\"\n}"
                    },
                    {
                      "name": "❌ 404 — تبرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/record-usage",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "record-usage"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/record-usage",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "record-usage"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم donations (employee.section:donations) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"donations\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/donations/{id}/record-usage",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "donations",
                            "{id}",
                            "record-usage"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_donation_id}}",
                              "description": "required · donation in scope · التبرع · source: GET {{base_url}}provider/donations"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"donations\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `donations` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/stop-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"stop_types\"); pm.expect(o).to.have.property(\"deferral_types\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/stop-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "stop-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `stop_type` (نوع الإيقاف) — كل نوع مسموح في مراحل محددة (`allowed_stages`) — مصدر أنواع إيقاف التبرع في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- G-P09 modal إيقاف التبرع (gap P-09) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\StopType + DeferralType` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Business rules / constraints:**\n- `allowed_stages` تحدد أي نوع يظهر حسب مرحلة التبرع الحالية.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/stop-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "stop-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"stop_types\": [\n      {\n        \"value\": \"donor_deferred\",\n        \"label\": \"استبعاد المتبرع\",\n        \"allowed_stages\": [\n          \"initial_screening\"\n        ]\n      },\n      {\n        \"value\": \"unit_rejected\",\n        \"label\": \"رفض الوحدة\",\n        \"allowed_stages\": [\n          \"lab_testing\",\n          \"processing\",\n          \"quality_assurance\",\n          \"storage\"\n        ]\n      }\n    ],\n    \"deferral_types\": [\n      {\n        \"value\": \"temporary\",\n        \"label\": \"مؤقت حتى تاريخ\"\n      },\n      {\n        \"value\": \"permanent\",\n        \"label\": \"دائم\"\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/stop-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "stop-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"stop_types\": [\n      {\n        \"value\": \"donor_deferred\",\n        \"label\": \"Donor deferred\",\n        \"allowed_stages\": [\n          \"initial_screening\"\n        ]\n      },\n      {\n        \"value\": \"unit_rejected\",\n        \"label\": \"Unit rejected\",\n        \"allowed_stages\": [\n          \"lab_testing\",\n          \"processing\",\n          \"quality_assurance\",\n          \"storage\"\n        ]\n      }\n    ],\n    \"deferral_types\": [\n      {\n        \"value\": \"temporary\",\n        \"label\": \"Temporary until date\"\n      },\n      {\n        \"value\": \"permanent\",\n        \"label\": \"Permanent\"\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/stop-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "stop-types"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/stop-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "stop-types"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/donations",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "donations",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ التبرعات على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: donations (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"donations\": 12\n    },\n    \"batch\": \"demo-20261019-001827\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "inventory",
              "description": "Flow `inventory` — 5 endpoints (sprint 5). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "inventory",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"stock screen\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"summary\"); pm.expect(o).to.have.property(\"alerts\"); pm.expect(o).to.have.property(\"stocks\"); });",
                          "pm.test(\"summary counters\", () => { const o = pm.response.json().data.summary; pm.expect(o).to.have.property(\"total_bags\"); pm.expect(o).to.have.property(\"available_types\"); pm.expect(o).to.have.property(\"types_count\"); pm.expect(o).to.have.property(\"low_count\"); pm.expect(o).to.have.property(\"critical_count\"); });",
                          "pm.test(\"eight cards with a colored level; alerts are low/critical only\", () => { const d = pm.response.json().data; pm.expect(d.stocks).to.have.length(8); d.stocks.forEach((s) => { [\"blood_type\", \"quantity\", \"level\", \"last_updated_at\"].forEach((k) => pm.expect(s).to.have.property(k)); pm.expect(s.level).to.have.property(\"bg_color\"); }); d.alerts.forEach((a) => pm.expect([\"low\", \"critical\"]).to.include(a.level.value)); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/inventory",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "inventory"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nأرصدة المخزون ومستوياتها.\n\n## Screens\n- P49 Blood Inventory — provider (web) `776:3046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:inventory`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `donation_type_id` — optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. لفرع واحد (موظف) أو `branch_id`/كل الفروع (owner)، ولمكوّن `donation_type_id` (الافتراضي دم كامل).\n2. لكل فصيلة (8): الكمية، `level` (`StockLevel`: qty ≤ low → critical؛ ≤ medium → low؛ وإلا available — من `inventory_thresholds`)، آخر تحديث.\n3. الملخص: إجمالي الأكياس، الفصائل المتوفرة (n من 8)، عدد المنخفض، عدد الحرج، `alerts[]` (منخفض/حرج لكل فصيلة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `inventory` (`employee.section:inventory`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"inventory\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory?donation_type_id=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"summary\": {\n      \"total_bags\": 326,\n      \"available_types\": 4,\n      \"types_count\": 8,\n      \"low_count\": 2,\n      \"critical_count\": 2\n    },\n    \"alerts\": [\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون AB- وصل إلى مستوى حرج — 6 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون O- وصل إلى مستوى حرج — 8 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون A- منخفض — 17 كيس\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون B- منخفض — 22 كيس\"\n      }\n    ],\n    \"stocks\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"quantity\": 84,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"quantity\": 17,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-10-05T07:39:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"quantity\": 56,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"quantity\": 22,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"quantity\": 31,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"quantity\": 6,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-16T13:48:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"quantity\": 102,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-10-16T15:37:00+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"quantity\": 8,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-15T12:09:50+00:00\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"summary\": {\n      \"total_bags\": 326,\n      \"available_types\": 4,\n      \"types_count\": 8,\n      \"low_count\": 2,\n      \"critical_count\": 2\n    },\n    \"alerts\": [\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"AB- stock reached a critical level — only 6 bags\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"O- stock reached a critical level — only 8 bags\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"A- stock is low — 17 bags\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"B- stock is low — 22 bags\"\n      }\n    ],\n    \"stocks\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"quantity\": 84,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"quantity\": 17,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-10-05T07:39:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"quantity\": 56,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"quantity\": 22,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"quantity\": 31,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"quantity\": 6,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-16T13:48:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"quantity\": 102,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-10-16T15:37:00+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"quantity\": 8,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-15T12:09:50+00:00\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — the owner reads every branch",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"summary\": {\n      \"total_bags\": 634,\n      \"available_types\": 3,\n      \"types_count\": 8,\n      \"low_count\": 3,\n      \"critical_count\": 2\n    },\n    \"alerts\": [\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون AB- وصل إلى مستوى حرج — 12 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون O- وصل إلى مستوى حرج — 28 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون A- منخفض — 34 كيس\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون B- منخفض — 36 كيس\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون AB+ منخفض — 55 كيس\"\n      }\n    ],\n    \"stocks\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"quantity\": 156,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"quantity\": 34,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-10-05T07:39:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"quantity\": 112,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"quantity\": 36,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"quantity\": 55,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"quantity\": 12,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-16T13:48:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"quantity\": 201,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-10-16T15:37:00+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"quantity\": 28,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-15T12:09:50+00:00\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (branch_id, donation_type_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory?branch_id=999999&donation_type_id=999999",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح. (and 1 more error)\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ],\n    \"donation_type_id\": [\n      \"حقل المحدد نوع التبرع غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم inventory (employee.section:inventory) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"inventory\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"inventory\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "inventory-movements",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"ledger rows (signed quantity, balance, level, actor, source)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"balance_after\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"level_after\"); pm.expect(o).to.have.property(\"created_by\"); pm.expect(o).to.have.property(\"source_code\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/inventory/movements",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "inventory",
                        "movements"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع",
                          "disabled": true
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · المكوّن",
                          "disabled": true
                        },
                        {
                          "key": "type",
                          "value": "issue",
                          "description": "optional · nullable|Rule::enum(MovementType::class) · العملية · source: GET {{base_url}}provider/lookups/movement-types",
                          "disabled": true
                        },
                        {
                          "key": "from",
                          "value": "{{dm18}}",
                          "description": "optional · nullable|date · من",
                          "disabled": true
                        },
                        {
                          "key": "to",
                          "value": "{{d12}}",
                          "description": "optional · nullable|date|after_or_equal:from · إلى",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nسجل حركات المخزون.\n\n## Screens\n- P49 Blood Inventory — سجل الحركات — provider (web) `776:3046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:inventory`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `blood_type` — optional · nullable|Rule::enum(BloodType::class) · الفصيلة · example: `O-`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · المكوّن · example: `1`\n- `type` — optional · nullable|Rule::enum(MovementType::class) · العملية · source: GET {{base_url}}provider/lookups/movement-types · example: `issue`\n- `from` — optional · nullable|date · من · example: `2026-10-01`\n- `to` — optional · nullable|date|after_or_equal:from · إلى · example: `2026-10-31`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. حركات النطاق الأحدث أولاً؛ فلاتر `branch_id`, `blood_type`, `donation_type_id`, `type`, `from`, `to`.\n2. كل صف: التاريخ، العملية (`MovementType` ملوّن)، الكمية ±، الرصيد بعدها، السبب، الفصيلة، الحالة (مستوى الرصيد بعدها)، من نفّذ (موظف/أدمن/النظام)، المصدر (DON-/NEED-/OFR-).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (blood_type, type, from/to) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `inventory` (`employee.section:inventory`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"inventory\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "description": "optional · nullable|Rule::enum(MovementType::class) · العملية · source: GET {{base_url}}provider/lookups/movement-types",
                              "disabled": true
                            },
                            {
                              "key": "from",
                              "value": "{{dm18}}",
                              "description": "optional · nullable|date · من",
                              "disabled": true
                            },
                            {
                              "key": "to",
                              "value": "{{d12}}",
                              "description": "optional · nullable|date|after_or_equal:from · إلى",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 27,\n        \"date\": \"2026-10-16T15:37:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 20,\n        \"balance_after\": 102,\n        \"reason\": \"حملة تبرع مجتمعية\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"date\": \"2026-10-16T13:48:50+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 4,\n        \"balance_after\": 6,\n        \"reason\": \"توريد احتياج NEED-2608-002\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level_after\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": \"NEED-2608-002\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 30,\n        \"date\": \"2026-10-15T12:09:50+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 6,\n        \"balance_after\": 8,\n        \"reason\": \"توريد احتياج NEED-2608-001\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level_after\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": \"NEED-2608-001\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 26,\n        \"date\": \"2026-10-15T09:15:00+00:00\",\n        \"type\": {\n          \"value\": \"issue\",\n          \"label\": \"صرف\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"quantity\": -6,\n        \"balance_after\": 82,\n        \"reason\": \"نقل إلى مستشفى الملك فهد\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 25,\n        \"date\": \"2026-10-14T08:29:00+00:00\",\n        \"type\": {\n          \"value\": \"issue\",\n          \"label\": \"صرف\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"quantity\": -5,\n        \"balance_after\": 88,\n        \"reason\": \"طلب روتيني\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 24,\n        \"date\": \"2026-10-13T16:45:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 5,\n        \"balance_after\": 93,\n        \"reason\": \"استلام تبرعات\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 23,\n        \"date\": \"2026-10-11T15:51:00+00:00\",\n        \"type\": {\n          \"value\": \"adjustment\",\n          \"label\": \"تعديل\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"quantity\": 17,\n        \"balance_after\": 88,\n        \"reason\": \"تصحيح جرد دوري\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 29,\n        \"date\": \"2026-10-11T08:41:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 1,\n        \"balance_after\": 2,\n        \"reason\": \"تبرع مكتمل DON-2610-011\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level_after\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": \"DON-2610-011\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 22,\n        \"date\": \"2026-10-10T13:57:00+00:00\",\n        \"type\": {\n          \"value\": \"issue\",\n          \"label\": \"صرف\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"quantity\": -3,\n        \"balance_after\": 71,\n        \"reason\": \"طلب طارئ\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 21,\n        \"date\": \"2026-10-09T16:52:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 8,\n        \"balance_after\": 74,\n        \"reason\": \"استلام تبرعات جديدة\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"date\": \"2026-10-09T13:48:50+00:00\",\n        \"type\": {\n          \"value\": \"adjustment\",\n          \"label\": \"تعديل\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"quantity\": 2,\n        \"balance_after\": 2,\n        \"reason\": \"رصيد افتتاحي بعد الجرد\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level_after\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 60,\n        \"date\": \"2026-10-09T13:02:50+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 14,\n        \"balance_after\": 20,\n        \"reason\": \"توريد احتياج NEED-2608-005\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"level_after\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": \"NEED-2608-005\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"كريات حمراء\"\n        }\n      },\n      {\n        \"id\": 20,\n        \"date\": \"2026-10-08T15:01:00+00:00\",\n        \"type\": {\n          \"value\": \"issue\",\n          \"label\": \"صرف\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"quantity\": -2,\n        \"balance_after\": 66,\n        \"reason\": \"حالة طارئة\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 19,\n        \"date\": \"2026-10-07T08:56:00+00:00\",\n        \"type\": {\n          \"value\": \"issue\",\n          \"label\": \"صرف\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"quantity\": -4,\n        \"balance_after\": 68,\n        \"reason\": \"طلب مستشفى\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        }\n      },\n      {\n        \"id\": 33,\n        \"date\": \"2026-10-07T07:27:50+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"إضافة\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 22,\n        \"balance_after\": 30,\n        \"reason\": \"توريد احتياج NEED-2608-003\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": \"NEED-2608-003\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 65,\n      \"last_page\": 5,\n      \"from\": 1,\n      \"to\": 15\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements?blood_type=O%2B&type=addition&from=2026-08-19&to=2026-10-18",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "description": "optional · nullable|Rule::enum(MovementType::class) · العملية · source: GET {{base_url}}provider/lookups/movement-types",
                              "disabled": true
                            },
                            {
                              "key": "from",
                              "value": "{{dm18}}",
                              "description": "optional · nullable|date · من",
                              "disabled": true
                            },
                            {
                              "key": "to",
                              "value": "{{d12}}",
                              "description": "optional · nullable|date|after_or_equal:from · إلى",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 27,\n        \"date\": \"2026-10-16T15:37:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"Addition\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 20,\n        \"balance_after\": 102,\n        \"reason\": \"حملة تبرع مجتمعية\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        }\n      },\n      {\n        \"id\": 24,\n        \"date\": \"2026-10-13T16:45:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"Addition\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 5,\n        \"balance_after\": 93,\n        \"reason\": \"استلام تبرعات\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        }\n      },\n      {\n        \"id\": 21,\n        \"date\": \"2026-10-09T16:52:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"Addition\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 8,\n        \"balance_after\": 74,\n        \"reason\": \"استلام تبرعات جديدة\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        }\n      },\n      {\n        \"id\": 18,\n        \"date\": \"2026-10-05T16:41:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"Addition\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 10,\n        \"balance_after\": 72,\n        \"reason\": \"استلام تبرعات جديدة\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        }\n      },\n      {\n        \"id\": 17,\n        \"date\": \"2026-10-05T09:49:00+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"Addition\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 1,\n        \"balance_after\": 62,\n        \"reason\": \"تبرع مكتمل DON-2610-012\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": \"DON-2610-012\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        }\n      },\n      {\n        \"id\": 16,\n        \"date\": \"2026-09-29T09:24:50+00:00\",\n        \"type\": {\n          \"value\": \"addition\",\n          \"label\": \"Addition\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"quantity\": 6,\n        \"balance_after\": 61,\n        \"reason\": \"توريد احتياج NEED-2608-007\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"level_after\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"created_by\": \"خالد فهد السبيعي\",\n        \"source_code\": \"NEED-2608-007\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 6,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 6\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (blood_type, type, from/to)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements?blood_type=Z&type=nope&from=2026-10-10&to=2026-10-01",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "description": "optional · nullable|Rule::enum(MovementType::class) · العملية · source: GET {{base_url}}provider/lookups/movement-types",
                              "disabled": true
                            },
                            {
                              "key": "from",
                              "value": "{{dm18}}",
                              "description": "optional · nullable|date · من",
                              "disabled": true
                            },
                            {
                              "key": "to",
                              "value": "{{d12}}",
                              "description": "optional · nullable|date|after_or_equal:from · إلى",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد فصيلة الدم غير صالح. (and 2 more errors)\",\n  \"errors\": {\n    \"blood_type\": [\n      \"حقل المحدد فصيلة الدم غير صالح.\"\n    ],\n    \"type\": [\n      \"حقل المحدد النوع غير صالح.\"\n    ],\n    \"to\": [\n      \"حقل إلى تاريخ يجب ان يكون تاريخ بعد او مطابق لتاريخ من تاريخ.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "description": "optional · nullable|Rule::enum(MovementType::class) · العملية · source: GET {{base_url}}provider/lookups/movement-types",
                              "disabled": true
                            },
                            {
                              "key": "from",
                              "value": "{{dm18}}",
                              "description": "optional · nullable|date · من",
                              "disabled": true
                            },
                            {
                              "key": "to",
                              "value": "{{d12}}",
                              "description": "optional · nullable|date|after_or_equal:from · إلى",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم inventory (employee.section:inventory) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"inventory\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "description": "optional · nullable|Rule::enum(MovementType::class) · العملية · source: GET {{base_url}}provider/lookups/movement-types",
                              "disabled": true
                            },
                            {
                              "key": "from",
                              "value": "{{dm18}}",
                              "description": "optional · nullable|date · من",
                              "disabled": true
                            },
                            {
                              "key": "to",
                              "value": "{{d12}}",
                              "description": "optional · nullable|date|after_or_equal:from · إلى",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"inventory\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "create-inventory-movement",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"ledger row\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"balance_after\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"level_after\"); pm.expect(o).to.have.property(\"created_by\"); pm.expect(o).to.have.property(\"source_code\"); });",
                          "pm.test(\"the balance after is never negative\", () => pm.expect(pm.response.json().data.balance_after).to.be.at.least(0));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/inventory/movements",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "inventory",
                        "movements"
                      ]
                    },
                    "description": "## Purpose\nتسجيل حركة مخزون يدوية.\n\n## Screens\n- P50 Record Stock Movement — provider (web) `2095:34822`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34822&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34822&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:inventory`\n\n## Parameters & fields\n### Body (form-data)\n- `branch_id` — owner: required · required_if:is_owner (owner with >1 branch) | ignored for branch employee (= his branch) | exists in scope · الفرع (gap G-P11) · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `blood_type` — required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types · example: `O-`\n- `donation_type_id` — required · required|exists:donation_types,id · نوع التبرع (المكوّن) · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `type` — required · required|Rule::enum(MovementType::class) · نوع العملية · source: GET {{base_url}}provider/lookups/movement-types · example: `issue`\n- `direction` — required_if:type,adjustment · nullable|required_if:type,adjustment|in:increase,decrease · الاتجاه (زيادة/نقص) · example: `increase`\n- `quantity` — required · required|integer|min:1|max:10000 · الكمية · example: `3`\n- `reason` — required · required|string|max:255 · السبب · example: `طلب طارئ لقسم الطوارئ`\n- `notes` — optional · nullable|string|max:500 · ملاحظات\n\n\n## Behaviour notes\n**Steps:**\n1. `InventoryService::record()` داخل transaction بـ `lockForUpdate` على صف `inventory_stocks` (يُنشأ إن لم يوجد).\n2. `addition` → +qty · `issue` → −qty (أكبر من الرصيد → 422 بالرصيد) · `adjustment` → ± حسب `direction`.\n3. يكتب `inventory_movements` (`balance_after`، `created_by`=الموظف) ويحدّث `last_movement_at`.\n4. يقيّم الحدود: عبور ≤ low → `provider_stock_critical` (push)، ≤ medium → `provider_stock_low` (db فقط).\n5. توريد احتياج/نقل عرض يُسجَّل يدوياً هنا بسبب نصي («توريد احتياج NEED-xxx» / «نقل عرض OFR-xxx») — لا حركة تلقائية.\n\n**Business rules / constraints:**\n- المخزون = Σ الحركات (invariant).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- `StockLevelChanged` event → `NotifyStockThresholdCrossed` (queued) only when the level band changes.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `provider_stock_critical` | موظفو inventory بالفرع + owner | مخزون حرج | مخزون فصيلة :blood_type (:type) وصل إلى مستوى حرج — :qty أكياس فقط | branch_id, blood_type | P49 |\n| `provider_stock_low` | موظفو inventory (database فقط) | مخزون منخفض | مخزون فصيلة :blood_type منخفض — :qty كيس | branch_id, blood_type | P49 |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/inventory.updated` → ar «تم تحديث المخزون بنجاح» / en \"Inventory updated\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | صرف أكبر من الرصيد | `inventory.insufficient` | الكمية المطلوب صرفها أكبر من الرصيد الحالي (:balance) | Quantity exceeds the current balance (:balance) |\n| 422 | فشل التحقق (blood_type, donation_type_id, type, direction, quantity, reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `inventory` (`employee.section:inventory`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"inventory\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "owner: required · required_if:is_owner (owner with >1 branch) | ignored for branch employee (= his branch) | exists in scope · الفرع (gap G-P11) · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:donation_types,id · نوع التبرع (المكوّن) · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "type",
                          "value": "issue",
                          "type": "text",
                          "description": "required · required|Rule::enum(MovementType::class) · نوع العملية · source: GET {{base_url}}provider/lookups/movement-types"
                        },
                        {
                          "key": "direction",
                          "value": "increase",
                          "type": "text",
                          "description": "required_if:type,adjustment · nullable|required_if:type,adjustment|in:increase,decrease · الاتجاه (زيادة/نقص)"
                        },
                        {
                          "key": "quantity",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:10000 · الكمية"
                        },
                        {
                          "key": "reason",
                          "value": "طلب طارئ لقسم الطوارئ",
                          "type": "text",
                          "description": "required · required|string|max:255 · السبب"
                        },
                        {
                          "key": "notes",
                          "value": "",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "طلب طارئ لقسم الطوارئ",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث المخزون بنجاح\",\n  \"data\": {\n    \"id\": 154,\n    \"date\": \"2026-10-18T14:28:41+00:00\",\n    \"type\": {\n      \"value\": \"issue\",\n      \"label\": \"صرف\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"quantity\": -3,\n    \"balance_after\": 5,\n    \"reason\": \"طلب طارئ لقسم الطوارئ\",\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"level_after\": {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"created_by\": \"خالد فهد السبيعي\",\n    \"source_code\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "type",
                              "value": "adjustment",
                              "type": "text"
                            },
                            {
                              "key": "direction",
                              "value": "increase",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "Stock-take correction",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "Monthly count",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Inventory updated\",\n  \"data\": {\n    \"id\": 154,\n    \"date\": \"2026-10-18T14:28:41+00:00\",\n    \"type\": {\n      \"value\": \"adjustment\",\n      \"label\": \"Adjustment\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"quantity\": 5,\n    \"balance_after\": 89,\n    \"reason\": \"Stock-take correction\",\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"level_after\": {\n      \"value\": \"available\",\n      \"label\": \"Available\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#F0FDF4\"\n    },\n    \"created_by\": \"خالد فهد السبيعي\",\n    \"source_code\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — صرف أكبر من الرصيد",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "quantity",
                              "value": "5000",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "طلب طارئ لقسم الطوارئ",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الكمية المطلوب صرفها أكبر من الرصيد الحالي (8)\",\n  \"key\": \"insufficient\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (blood_type, donation_type_id, type, direction, quantity, reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "type",
                              "value": "adjustment",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل فصيلة الدم مطلوب. (and 4 more errors)\",\n  \"errors\": {\n    \"blood_type\": [\n      \"الحقل فصيلة الدم مطلوب.\"\n    ],\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ],\n    \"direction\": [\n      \"الحقل الاتجاه مطلوب في حال ما إذا كان النوع يساوي adjustment.\"\n    ],\n    \"quantity\": [\n      \"يجب أن تكون قيمة الحقل الكمية مساوية أو أكبر لـ 1.\"\n    ],\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم inventory (employee.section:inventory) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"inventory\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/movements",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "movements"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "type",
                              "value": "issue",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "طلب طارئ لقسم الطوارئ",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"inventory\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "inventory-thresholds",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"level settings\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"levels\"); pm.expect(o).to.have.property(\"legend\"); });",
                          "pm.test(\"eight rows low < medium < max, legend of the three bands\", () => { const d = pm.response.json().data; pm.expect(d.levels).to.have.length(8); d.levels.forEach((r) => { pm.expect(r.low_level).to.be.below(r.medium_level); pm.expect(r.medium_level).to.be.below(r.max_level); }); pm.expect(d.legend.map((l) => l.value)).to.eql([\"available\", \"low\", \"critical\"]); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/inventory/thresholds",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "inventory",
                        "thresholds"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope (owner) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nحدود مستويات المخزون لكل فصيلة.\n\n## Screens\n- P51 Stock Level Settings — provider (web) `2095:34284`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34284&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34284&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:inventory`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope (owner) · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. لكل فصيلة: الحد الأقصى/المتوسط/المنخفض (أكياس) لفرع — الافتراضي 100/25/10 لو لا صف.\n2. معاينة الألوان = ألوان `StockLevel`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `inventory` (`employee.section:inventory`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"inventory\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"levels\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      }\n    ],\n    \"legend\": [\n      {\n        \"value\": \"available\",\n        \"label\": \"متوفر\",\n        \"color\": \"#15803D\",\n        \"bg_color\": \"#F0FDF4\"\n      },\n      {\n        \"value\": \"low\",\n        \"label\": \"منخفض\",\n        \"color\": \"#B45309\",\n        \"bg_color\": \"#FFFBEB\"\n      },\n      {\n        \"value\": \"critical\",\n        \"label\": \"حرج\",\n        \"color\": \"#C8102E\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds?branch_id=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"levels\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      }\n    ],\n    \"legend\": [\n      {\n        \"value\": \"available\",\n        \"label\": \"Available\",\n        \"color\": \"#15803D\",\n        \"bg_color\": \"#F0FDF4\"\n      },\n      {\n        \"value\": \"low\",\n        \"label\": \"Low\",\n        \"color\": \"#B45309\",\n        \"bg_color\": \"#FFFBEB\"\n      },\n      {\n        \"value\": \"critical\",\n        \"label\": \"Critical\",\n        \"color\": \"#C8102E\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (branch_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds?branch_id=999999",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم inventory (employee.section:inventory) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"inventory\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"inventory\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "update-inventory-thresholds",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"saved level settings\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"levels\"); });",
                          "pm.test(\"rows\", () => { const l = pm.response.json().data.levels; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"max_level\"); pm.expect(o).to.have.property(\"medium_level\"); pm.expect(o).to.have.property(\"low_level\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/inventory/thresholds",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "inventory",
                        "thresholds"
                      ]
                    },
                    "description": "## Purpose\nتعديل حدود المستويات.\n\n## Screens\n- P51 Stock Level Settings — «حفظ الإعدادات» — provider (web) `2095:34284`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34284&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34284&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:inventory`\n\n## Parameters & fields\n### Body (form-data)\n- `_method` — required · PUT · spoofing · example: `PUT`\n- `branch_id` — owner: required · required_if:is_owner (owner with >1 branch) | ignored for branch employee (= his branch) | exists in scope · الفرع (gap G-P11) · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `levels` — required · required|array|min:1 · الصفوف (array parent — send `levels[0][…]`, it is not a sendable field itself) · example: `(rows)`\n- `levels[0][blood_type]` — required · required|Rule::enum(BloodType::class)|distinct · الفصيلة · example: `O-`\n- `levels[0][max_level]` — required · required|integer|min:0 (low < medium < max is checked in after() and reported as ONE levels error) · الحد الأقصى · example: `100`\n- `levels[0][medium_level]` — required · required|integer|min:0 · المتوسط · example: `25`\n- `levels[0][low_level]` — required · required|integer|min:0 · المنخفض · example: `10`\n\n\n## Behaviour notes\n**Steps:**\n1. `updateOrCreate` لكل فصيلة على (branch, blood_type).\n2. قاعدة: منخفض < متوسط < أقصى لكل صف (422).\n3. إعادة تقييم المستويات بعد الحفظ.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/inventory.thresholds_saved` → ar «تم حفظ إعدادات المستويات» / en \"Level settings saved\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | ترتيب الحدود غير صحيح | `validation.custom.levels.order` | يجب أن يكون المنخفض أقل من المتوسط والمتوسط أقل من الحد الأقصى | Low must be below medium and medium below max |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `inventory` (`employee.section:inventory`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"inventory\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n\n> الـ route هو `PUT {{base_url}}provider/inventory/thresholds`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "owner: required · required_if:is_owner (owner with >1 branch) | ignored for branch employee (= his branch) | exists in scope · الفرع (gap G-P11) · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "levels[0][blood_type]",
                          "value": "O-",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class)|distinct · الفصيلة"
                        },
                        {
                          "key": "levels[0][max_level]",
                          "value": "100",
                          "type": "text",
                          "description": "required · required|integer|min:0 (low < medium < max is checked in after() and reported as ONE levels error) · الحد الأقصى"
                        },
                        {
                          "key": "levels[0][medium_level]",
                          "value": "30",
                          "type": "text",
                          "description": "required · required|integer|min:0 · المتوسط"
                        },
                        {
                          "key": "levels[0][low_level]",
                          "value": "12",
                          "type": "text",
                          "description": "required · required|integer|min:0 · المنخفض"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][blood_type]",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][max_level]",
                              "value": "100",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][medium_level]",
                              "value": "30",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][low_level]",
                              "value": "12",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ إعدادات المستويات\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"levels\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 30,\n        \"low_level\": 12\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][blood_type]",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][max_level]",
                              "value": "120",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][medium_level]",
                              "value": "40",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][low_level]",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Level settings saved\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"levels\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"max_level\": 100,\n        \"medium_level\": 25,\n        \"low_level\": 10\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"max_level\": 120,\n        \"medium_level\": 40,\n        \"low_level\": 15\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — ترتيب الحدود غير صحيح",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][blood_type]",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][max_level]",
                              "value": "100",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][medium_level]",
                              "value": "10",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][low_level]",
                              "value": "10",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن يكون المنخفض أقل من المتوسط والمتوسط أقل من الحد الأقصى\",\n  \"errors\": {\n    \"levels\": [\n      \"يجب أن يكون المنخفض أقل من المتوسط والمتوسط أقل من الحد الأقصى\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم inventory (employee.section:inventory) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"inventory\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory/thresholds",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory",
                            "thresholds"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][blood_type]",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][max_level]",
                              "value": "100",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][medium_level]",
                              "value": "25",
                              "type": "text"
                            },
                            {
                              "key": "levels[0][low_level]",
                              "value": "10",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"inventory\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `inventory` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/movement-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/movement-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "movement-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `type` (نوع حركة المخزون) — مصدر أنواع حركات المخزون في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P50 Record Stock Movement — provider (web) `2095:34822`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34822&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34822&scaling=scale-down&content-scaling=fixed)\n- P49 Blood Inventory — فلتر الحركات — provider (web) `776:3046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\MovementType` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Business rules / constraints:**\n- `adjustment` يتطلب `direction` (increase|decrease) في الطلب.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/movement-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "movement-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"addition\",\n      \"label\": \"إضافة\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#F0FDF4\"\n    },\n    {\n      \"value\": \"issue\",\n      \"label\": \"صرف\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    {\n      \"value\": \"adjustment\",\n      \"label\": \"تعديل\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/movement-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "movement-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"addition\",\n      \"label\": \"Addition\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#F0FDF4\"\n    },\n    {\n      \"value\": \"issue\",\n      \"label\": \"Issue\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    {\n      \"value\": \"adjustment\",\n      \"label\": \"Adjustment\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/movement-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "movement-types"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/movement-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "movement-types"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/inventory",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ المخزون والحركات على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: inventory (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"inventory\": 24\n    },\n    \"batch\": \"demo-20261019-001827\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "needs",
              "description": "Flow `needs` — 5 endpoints (sprint 7). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "needs",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"need rows (stock link, deficit, colored priority + status, overdue, buttons)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"provided_quantity\"); pm.expect(o).to.have.property(\"available\"); pm.expect(o).to.have.property(\"reserved\"); pm.expect(o).to.have.property(\"deficit\"); pm.expect(o).to.have.property(\"coverage_percent\"); pm.expect(o).to.have.property(\"priority\"); pm.expect(o).to.have.property(\"needed_on\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"is_overdue\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated + summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); pm.expect(o).to.have.property(\"meta\"); });",
                          "pm.test(\"summary\", () => { const o = pm.response.json().data.meta.summary; pm.expect(o).to.have.property(\"last_updated_at\"); pm.expect(o).to.have.property(\"total_bags\"); pm.expect(o).to.have.property(\"records\"); pm.expect(o).to.have.property(\"critical_bags\"); pm.expect(o).to.have.property(\"critical_types\"); pm.expect(o).to.have.property(\"active_types\"); pm.expect(o).to.have.property(\"fulfilled_percent\"); pm.expect(o).to.have.property(\"fulfilled_bags\"); pm.expect(o).to.have.property(\"critical_alerts\"); pm.expect(o).to.have.property(\"cards\"); });",
                          "pm.test(\"a card per blood type\", () => { const c = pm.response.json().data.meta.summary.cards; pm.expect(c).to.have.length(8); c.forEach((x) => { pm.expect(x).to.have.property(\"blood_type\"); pm.expect(x).to.have.property(\"required\"); pm.expect(x).to.have.property(\"available\"); pm.expect(x).to.have.property(\"coverage_percent\"); }); });",
                          "pm.test(\"the fixed panel buttons\", () => { const l = pm.response.json().data.data; if (l.length) pm.expect(l[0].action_buttons.map((b) => b.key)).to.eql([\"edit\", \"cancel\"]); });",
                          "{ const l = pm.response.json().data.data; const n = l.find((x) => x.action_buttons?.find((b) => b.key === \"edit\")?.is_available); if (n) { pm.collectionVariables.set(\"provider_need_id\", n.id); pm.environment.set(\"provider_need_id\", n.id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/needs",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "needs"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع",
                          "disabled": true
                        },
                        {
                          "key": "status",
                          "value": "active",
                          "description": "optional · nullable|Rule::enum(NeedStatus::class) · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "priority",
                          "value": "critical",
                          "description": "optional · nullable|Rule::enum(NeedPriority::class) · الأولوية",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · المكوّن",
                          "disabled": true
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "NEED-2608",
                          "description": "optional · nullable|string|max:50 · بحث",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nلوحة الاحتياج وقائمته.\n\n## Screens\n- P68 Blood Requirements (إجمالي الاحتياج) — provider (web) `779:9655`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9655&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9655&scaling=scale-down&content-scaling=fixed)\n- G-P15 وسم «متأخر» + نتيجة الإقفال (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:needs`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `status` — optional · nullable|Rule::enum(NeedStatus::class) · الحالة · example: `active`\n- `priority` — optional · nullable|Rule::enum(NeedPriority::class) · الأولوية · example: `critical`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · المكوّن · example: `1`\n- `blood_type` — optional · nullable|Rule::enum(BloodType::class) · الفصيلة · example: `O-`\n- `search` — optional · nullable|string|max:50 · بحث · example: `NEED-2608`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. احتياجات النطاق مع فلاتر `status`, `priority`, `donation_type_id`, `blood_type`, `search` (NEED-)، `branch_id`.\n2. لكل صف: الفصيلة، المكوّن، المطلوب، المتوفر (رصيد المخزون للفصيلة+المكوّن)، المحجوز (= 0 — لا حجز آلي؛ يبقى المفتاح لأن الشاشة تعرضه)، العجز (المطلوب − المستوفى − المتوفر ≥ 0)، الأولوية، تاريخ الاحتياج، الحالة، `is_overdue` («متأخر» = تاريخ مضى والحالة active/partial).\n3. `meta.summary`: آخر تحديث، إجمالي الاحتياج (126 كيس، 8 سجل)، الحرج (24 كيس، فصيلتان)، فصائل نشطة 6، المستوفى % (86/126)، `critical_alerts[]`، `cards[]` لكل فصيلة (الأولوية، المطلوب، المتوفر، العجز، التغطية %، «لا يوجد احتياج — المخزون N»).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (status, priority, blood_type) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `needs` (`employee.section:needs`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"needs\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(NeedStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "description": "optional · nullable|Rule::enum(NeedPriority::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "NEED-2608",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 10,\n        \"code\": \"NEED-2608-010\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"quantity\": 8,\n        \"provided_quantity\": 0,\n        \"available\": 9,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 0,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-13\",\n        \"needed_time\": null,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"is_overdue\": true,\n        \"overdue_label\": \"متأخر\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/10\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/10/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"code\": \"NEED-2608-009\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"quantity\": 5,\n        \"provided_quantity\": 0,\n        \"available\": 25,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 0,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-19\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/9\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/9/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"code\": \"NEED-2608-008\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 10,\n        \"provided_quantity\": 0,\n        \"available\": 22,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 0,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-08\",\n        \"needed_time\": null,\n        \"status\": {\n          \"value\": \"unfulfillable\",\n          \"label\": \"تعذّر التوفير\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/8\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/8/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"code\": \"NEED-2608-007\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 6,\n        \"provided_quantity\": 6,\n        \"available\": 102,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 100,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-10\",\n        \"needed_time\": null,\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"تم الاستيفاء\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/7\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/7/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"code\": \"NEED-2608-006\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"quantity\": 20,\n        \"provided_quantity\": 14,\n        \"available\": 19,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 70,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-27\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"تم استيفاء جزء منه\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/6\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/6/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"code\": \"NEED-2608-005\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"كريات حمراء\"\n        },\n        \"quantity\": 18,\n        \"provided_quantity\": 14,\n        \"available\": 20,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 78,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-20\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"تم استيفاء جزء منه\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/5\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/5/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"code\": \"NEED-2608-004\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 15,\n        \"provided_quantity\": 12,\n        \"available\": 17,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 80,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-24\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"تم استيفاء جزء منه\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/4\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/4/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"code\": \"NEED-2608-003\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"quantity\": 25,\n        \"provided_quantity\": 22,\n        \"available\": 30,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 88,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-22\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"تم استيفاء جزء منه\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/3\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/3/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"NEED-2608-002\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 12,\n        \"provided_quantity\": 4,\n        \"available\": 6,\n        \"reserved\": 0,\n        \"deficit\": 2,\n        \"coverage_percent\": 33,\n        \"priority\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"needed_on\": \"2026-10-20\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/2\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/2/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 1,\n        \"code\": \"NEED-2608-001\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 22,\n        \"provided_quantity\": 6,\n        \"available\": 8,\n        \"reserved\": 0,\n        \"deficit\": 8,\n        \"coverage_percent\": 27,\n        \"priority\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"needed_on\": \"2026-10-21\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/1\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/1/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 10,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 10\n    },\n    \"meta\": {\n      \"summary\": {\n        \"last_updated_at\": \"2026-10-15T13:16:36+00:00\",\n        \"total_bags\": 120,\n        \"records\": 7,\n        \"critical_bags\": 34,\n        \"critical_types\": 2,\n        \"active_types\": 6,\n        \"fulfilled_percent\": 60,\n        \"fulfilled_bags\": 72,\n        \"critical_alerts\": [\n          {\n            \"blood_type\": {\n              \"value\": \"O-\",\n              \"label\": \"O-\"\n            },\n            \"deficit\": 8,\n            \"reason\": \"انخفاض المخزون\"\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"AB-\",\n              \"label\": \"AB-\"\n            },\n            \"deficit\": 2,\n            \"reason\": \"حالة مريض\"\n          }\n        ],\n        \"cards\": [\n          {\n            \"blood_type\": {\n              \"value\": \"A+\",\n              \"label\": \"A+\"\n            },\n            \"priority\": {\n              \"value\": \"urgent\",\n              \"label\": \"عاجل\",\n              \"color\": \"#D97706\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"required\": 25,\n            \"available\": 164,\n            \"deficit\": 0,\n            \"coverage_percent\": 88,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"A-\",\n              \"label\": \"A-\"\n            },\n            \"priority\": {\n              \"value\": \"urgent\",\n              \"label\": \"عاجل\",\n              \"color\": \"#D97706\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"required\": 23,\n            \"available\": 42,\n            \"deficit\": 0,\n            \"coverage_percent\": 52,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"B+\",\n              \"label\": \"B+\"\n            },\n            \"priority\": {\n              \"value\": \"urgent\",\n              \"label\": \"عاجل\",\n              \"color\": \"#D97706\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"required\": 18,\n            \"available\": 109,\n            \"deficit\": 0,\n            \"coverage_percent\": 78,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"B-\",\n              \"label\": \"B-\"\n            },\n            \"priority\": null,\n            \"required\": 0,\n            \"available\": 40,\n            \"deficit\": 0,\n            \"coverage_percent\": 100,\n            \"no_need_text\": \"لا يوجد احتياج — المخزون 40\"\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"AB+\",\n              \"label\": \"AB+\"\n            },\n            \"priority\": {\n              \"value\": \"routine\",\n              \"label\": \"روتيني\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"required\": 20,\n            \"available\": 71,\n            \"deficit\": 0,\n            \"coverage_percent\": 70,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"AB-\",\n              \"label\": \"AB-\"\n            },\n            \"priority\": {\n              \"value\": \"critical\",\n              \"label\": \"حرج\",\n              \"color\": \"#C8102E\",\n              \"bg_color\": \"#FEF2F2\"\n            },\n            \"required\": 12,\n            \"available\": 15,\n            \"deficit\": 0,\n            \"coverage_percent\": 33,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"O+\",\n              \"label\": \"O+\"\n            },\n            \"priority\": null,\n            \"required\": 0,\n            \"available\": 189,\n            \"deficit\": 0,\n            \"coverage_percent\": 100,\n            \"no_need_text\": \"لا يوجد احتياج — المخزون 189\"\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"O-\",\n              \"label\": \"O-\"\n            },\n            \"priority\": {\n              \"value\": \"critical\",\n              \"label\": \"حرج\",\n              \"color\": \"#C8102E\",\n              \"bg_color\": \"#FEF2F2\"\n            },\n            \"required\": 22,\n            \"available\": 29,\n            \"deficit\": 0,\n            \"coverage_percent\": 27,\n            \"no_need_text\": null\n          }\n        ]\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(NeedStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "description": "optional · nullable|Rule::enum(NeedPriority::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "NEED-2608",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 10,\n        \"code\": \"NEED-2608-010\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"Plasma\"\n        },\n        \"quantity\": 8,\n        \"provided_quantity\": 0,\n        \"available\": 9,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 0,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-13\",\n        \"needed_time\": null,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"is_overdue\": true,\n        \"overdue_label\": \"Overdue\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/10\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/10/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"code\": \"NEED-2608-009\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"quantity\": 5,\n        \"provided_quantity\": 0,\n        \"available\": 25,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 0,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-19\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/9\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/9/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"code\": \"NEED-2608-008\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 10,\n        \"provided_quantity\": 0,\n        \"available\": 22,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 0,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-08\",\n        \"needed_time\": null,\n        \"status\": {\n          \"value\": \"unfulfillable\",\n          \"label\": \"Unfulfillable\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/8\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/8/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"code\": \"NEED-2608-007\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 6,\n        \"provided_quantity\": 6,\n        \"available\": 102,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 100,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-10\",\n        \"needed_time\": null,\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"Fulfilled\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/7\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/7/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"code\": \"NEED-2608-006\",\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"Plasma\"\n        },\n        \"quantity\": 20,\n        \"provided_quantity\": 14,\n        \"available\": 19,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 70,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-27\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"Partially fulfilled\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/6\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/6/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"code\": \"NEED-2608-005\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"Red Cells\"\n        },\n        \"quantity\": 18,\n        \"provided_quantity\": 14,\n        \"available\": 20,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 78,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-20\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"Partially fulfilled\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/5\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/5/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"code\": \"NEED-2608-004\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 15,\n        \"provided_quantity\": 12,\n        \"available\": 17,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 80,\n        \"priority\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"needed_on\": \"2026-10-24\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"Partially fulfilled\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/4\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/4/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"code\": \"NEED-2608-003\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"quantity\": 25,\n        \"provided_quantity\": 22,\n        \"available\": 30,\n        \"reserved\": 0,\n        \"deficit\": 0,\n        \"coverage_percent\": 88,\n        \"priority\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"needed_on\": \"2026-10-22\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"partially_fulfilled\",\n          \"label\": \"Partially fulfilled\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/3\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/3/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"NEED-2608-002\",\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 12,\n        \"provided_quantity\": 4,\n        \"available\": 6,\n        \"reserved\": 0,\n        \"deficit\": 2,\n        \"coverage_percent\": 33,\n        \"priority\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"needed_on\": \"2026-10-20\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/2\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/2/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 1,\n        \"code\": \"NEED-2608-001\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 22,\n        \"provided_quantity\": 6,\n        \"available\": 8,\n        \"reserved\": 0,\n        \"deficit\": 8,\n        \"coverage_percent\": 27,\n        \"priority\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"needed_on\": \"2026-10-21\",\n        \"needed_time\": \"10:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"is_overdue\": false,\n        \"overdue_label\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/needs/1\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/needs/1/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 10,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 10\n    },\n    \"meta\": {\n      \"summary\": {\n        \"last_updated_at\": \"2026-10-15T13:16:36+00:00\",\n        \"total_bags\": 120,\n        \"records\": 7,\n        \"critical_bags\": 34,\n        \"critical_types\": 2,\n        \"active_types\": 6,\n        \"fulfilled_percent\": 60,\n        \"fulfilled_bags\": 72,\n        \"critical_alerts\": [\n          {\n            \"blood_type\": {\n              \"value\": \"O-\",\n              \"label\": \"O-\"\n            },\n            \"deficit\": 8,\n            \"reason\": \"Low stock\"\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"AB-\",\n              \"label\": \"AB-\"\n            },\n            \"deficit\": 2,\n            \"reason\": \"Patient case\"\n          }\n        ],\n        \"cards\": [\n          {\n            \"blood_type\": {\n              \"value\": \"A+\",\n              \"label\": \"A+\"\n            },\n            \"priority\": {\n              \"value\": \"urgent\",\n              \"label\": \"Urgent\",\n              \"color\": \"#D97706\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"required\": 25,\n            \"available\": 164,\n            \"deficit\": 0,\n            \"coverage_percent\": 88,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"A-\",\n              \"label\": \"A-\"\n            },\n            \"priority\": {\n              \"value\": \"urgent\",\n              \"label\": \"Urgent\",\n              \"color\": \"#D97706\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"required\": 23,\n            \"available\": 42,\n            \"deficit\": 0,\n            \"coverage_percent\": 52,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"B+\",\n              \"label\": \"B+\"\n            },\n            \"priority\": {\n              \"value\": \"urgent\",\n              \"label\": \"Urgent\",\n              \"color\": \"#D97706\",\n              \"bg_color\": \"#FFFBEB\"\n            },\n            \"required\": 18,\n            \"available\": 109,\n            \"deficit\": 0,\n            \"coverage_percent\": 78,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"B-\",\n              \"label\": \"B-\"\n            },\n            \"priority\": null,\n            \"required\": 0,\n            \"available\": 40,\n            \"deficit\": 0,\n            \"coverage_percent\": 100,\n            \"no_need_text\": \"No need — stock 40\"\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"AB+\",\n              \"label\": \"AB+\"\n            },\n            \"priority\": {\n              \"value\": \"routine\",\n              \"label\": \"Routine\",\n              \"color\": \"#059669\",\n              \"bg_color\": \"#ECFDF5\"\n            },\n            \"required\": 20,\n            \"available\": 71,\n            \"deficit\": 0,\n            \"coverage_percent\": 70,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"AB-\",\n              \"label\": \"AB-\"\n            },\n            \"priority\": {\n              \"value\": \"critical\",\n              \"label\": \"Critical\",\n              \"color\": \"#C8102E\",\n              \"bg_color\": \"#FEF2F2\"\n            },\n            \"required\": 12,\n            \"available\": 15,\n            \"deficit\": 0,\n            \"coverage_percent\": 33,\n            \"no_need_text\": null\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"O+\",\n              \"label\": \"O+\"\n            },\n            \"priority\": null,\n            \"required\": 0,\n            \"available\": 189,\n            \"deficit\": 0,\n            \"coverage_percent\": 100,\n            \"no_need_text\": \"No need — stock 189\"\n          },\n          {\n            \"blood_type\": {\n              \"value\": \"O-\",\n              \"label\": \"O-\"\n            },\n            \"priority\": {\n              \"value\": \"critical\",\n              \"label\": \"Critical\",\n              \"color\": \"#C8102E\",\n              \"bg_color\": \"#FEF2F2\"\n            },\n            \"required\": 22,\n            \"available\": 29,\n            \"deficit\": 0,\n            \"coverage_percent\": 27,\n            \"no_need_text\": null\n          }\n        ]\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status, priority, blood_type)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs?status=bogus&priority=bogus&blood_type=Z",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(NeedStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "description": "optional · nullable|Rule::enum(NeedPriority::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "NEED-2608",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الحالة غير صالح. (and 2 more errors)\",\n  \"errors\": {\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ],\n    \"priority\": [\n      \"حقل المحدد الأولوية غير صالح.\"\n    ],\n    \"blood_type\": [\n      \"حقل المحدد فصيلة الدم غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(NeedStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "description": "optional · nullable|Rule::enum(NeedPriority::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "NEED-2608",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم needs (employee.section:needs)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(NeedStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "description": "optional · nullable|Rule::enum(NeedPriority::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "NEED-2608",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"needs\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(NeedStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "description": "optional · nullable|Rule::enum(NeedPriority::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · المكوّن",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "NEED-2608",
                              "description": "optional · nullable|string|max:50 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "create-need",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"created need\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"provided_quantity\"); pm.expect(o).to.have.property(\"available\"); pm.expect(o).to.have.property(\"deficit\"); pm.expect(o).to.have.property(\"priority\"); pm.expect(o).to.have.property(\"needed_on\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"coverage_text\"); pm.expect(o).to.have.property(\"stock_link\"); pm.expect(o).to.have.property(\"admin_closure\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"a new need is active, untouched and carries a NEED- code\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"active\"); pm.expect(d.provided_quantity).to.eql(0); pm.expect(d.code).to.match(/^NEED-[0-9]{4}-[0-9]+$/); pm.expect(d.admin_closure).to.eql(null); });",
                          "{ const id = pm.response.json().data.id; if (id) { pm.collectionVariables.set(\"provider_need_id\", id); pm.environment.set(\"provider_need_id\", id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/needs",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "needs"
                      ]
                    },
                    "description": "## Purpose\nإضافة احتياج دم للفرع.\n\n## Screens\n- P77 Add Blood Requirement (modal) — provider (web) `779:14416`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:needs`\n\n## Parameters & fields\n### Body (form-data)\n- `branch_id` — owner: required · required_if:is_owner (owner with >1 branch) | ignored for branch employee (= his branch) | exists in scope · الفرع (gap G-P11) · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `donation_type_id` — required · required|exists:donation_types,id · النوع (المكوّن) · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `blood_type` — required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types · example: `O-`\n- `quantity` — required · required|integer|min:1|max:1000 · الكمية (أكياس) · example: `22`\n- `priority` — required · required|Rule::enum(NeedPriority::class) · الأولوية (روتيني/عاجل/حرج — C6) · source: GET {{base_url}}provider/lookups/need-priorities · example: `critical`\n- `needed_on` — required · required|date_format:Y-m-d|after_or_equal:today · تاريخ الاحتياج · example: `2026-10-25`\n- `needed_time` — optional · nullable|date_format:H:i · الوقت (اختياري) · example: `10:00`\n- `reason` — required · required|Rule::enum(NeedReason::class) · السبب · source: GET {{base_url}}provider/lookups/need-reasons · example: `low_stock`\n- `notes` — optional · nullable|string|max:500 · ملاحظات · example: `المخزون أقل من الحد الأدنى`\n\n\n## Behaviour notes\n**Steps:**\n1. ينشئ `blood_needs` (`status=active`, `code` NEED- عبر Observer، `created_by`=الموظف).\n2. كل احتياج → `admin_need_created` (database)؛ الحرج → `admin_need_critical` إضافياً.\n3. لا حركة مخزون آلية.\n\n**Status / state transitions:** `NeedStatus`: — → `active`.\n\n**Side effects (Laravel-first):**\n- `BloodNeedCreated` event → admin database notification.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_need_created / admin_need_critical` | الأدمن | احتياج جديد / احتياج حرج | :org — :blood_type :qty كيس | need_id | admin needs.show |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/need.created` → ar «تمت إضافة الاحتياج بنجاح» / en \"Need added\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (donation_type_id, blood_type, quantity, priority, needed_on, reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `needs` (`employee.section:needs`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"needs\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "owner: required · required_if:is_owner (owner with >1 branch) | ignored for branch employee (= his branch) | exists in scope · الفرع (gap G-P11) · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|exists:donation_types,id · النوع (المكوّن) · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "quantity",
                          "value": "22",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:1000 · الكمية (أكياس)"
                        },
                        {
                          "key": "priority",
                          "value": "critical",
                          "type": "text",
                          "description": "required · required|Rule::enum(NeedPriority::class) · الأولوية (روتيني/عاجل/حرج — C6) · source: GET {{base_url}}provider/lookups/need-priorities"
                        },
                        {
                          "key": "needed_on",
                          "value": "{{d7}}",
                          "type": "text",
                          "description": "required · required|date_format:Y-m-d|after_or_equal:today · تاريخ الاحتياج"
                        },
                        {
                          "key": "needed_time",
                          "value": "10:00",
                          "type": "text",
                          "description": "optional · nullable|date_format:H:i · الوقت (اختياري)"
                        },
                        {
                          "key": "reason",
                          "value": "low_stock",
                          "type": "text",
                          "description": "required · required|Rule::enum(NeedReason::class) · السبب · source: GET {{base_url}}provider/lookups/need-reasons"
                        },
                        {
                          "key": "notes",
                          "value": "المخزون أقل من الحد الأدنى",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تمت إضافة الاحتياج بنجاح\",\n  \"data\": {\n    \"id\": 14,\n    \"code\": \"NEED-2610-001\",\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"بلازما\"\n    },\n    \"quantity\": 22,\n    \"provided_quantity\": 0,\n    \"available\": 8,\n    \"reserved\": 0,\n    \"deficit\": 14,\n    \"coverage_percent\": 0,\n    \"priority\": {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"needed_on\": \"2026-10-26\",\n    \"needed_time\": \"10:00\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/14\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/14/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      }\n    ],\n    \"remaining\": 22,\n    \"coverage_text\": \"تم توفير 0 من 22 — متبقي 22\",\n    \"stock_link\": {\n      \"required\": 22,\n      \"available\": 8,\n      \"deficit\": 14,\n      \"formula_text\": \"العجز = المطلوب (22) − المستوفى (0) − المتاح (8) = 14\"\n    },\n    \"reason\": {\n      \"value\": \"low_stock\",\n      \"label\": \"انخفاض المخزون\"\n    },\n    \"notes\": \"المخزون أقل من الحد الأدنى\",\n    \"created_at\": \"2026-10-18T21:11:39+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Need added\",\n  \"data\": {\n    \"id\": 15,\n    \"code\": \"NEED-2610-001\",\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"Plasma\"\n    },\n    \"quantity\": 22,\n    \"provided_quantity\": 0,\n    \"available\": 8,\n    \"reserved\": 0,\n    \"deficit\": 14,\n    \"coverage_percent\": 0,\n    \"priority\": {\n      \"value\": \"critical\",\n      \"label\": \"Critical\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"needed_on\": \"2026-10-26\",\n    \"needed_time\": \"10:00\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/15\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/15/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      }\n    ],\n    \"remaining\": 22,\n    \"coverage_text\": \"Provided 0 of 22 — 22 remaining\",\n    \"stock_link\": {\n      \"required\": 22,\n      \"available\": 8,\n      \"deficit\": 14,\n      \"formula_text\": \"Deficit = required (22) − provided (0) − available (8) = 14\"\n    },\n    \"reason\": {\n      \"value\": \"low_stock\",\n      \"label\": \"Low stock\"\n    },\n    \"notes\": \"المخزون أقل من الحد الأدنى\",\n    \"created_at\": \"2026-10-18T21:11:39+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (donation_type_id, blood_type, quantity, priority, needed_on, reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل نوع التبرع مطلوب. (and 5 more errors)\",\n  \"errors\": {\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ],\n    \"blood_type\": [\n      \"الحقل فصيلة الدم مطلوب.\"\n    ],\n    \"quantity\": [\n      \"الحقل الكمية مطلوب.\"\n    ],\n    \"priority\": [\n      \"الحقل الأولوية مطلوب.\"\n    ],\n    \"needed_on\": [\n      \"الحقل تاريخ الاحتياج مطلوب.\"\n    ],\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم needs (employee.section:needs)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"needs\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "need-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"need details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"remaining\"); pm.expect(o).to.have.property(\"coverage_percent\"); pm.expect(o).to.have.property(\"coverage_text\"); pm.expect(o).to.have.property(\"stock_link\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"notes\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"admin_closure\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"stock link + formula\", () => { const o = pm.response.json().data.stock_link; pm.expect(o).to.have.property(\"required\"); pm.expect(o).to.have.property(\"available\"); pm.expect(o).to.have.property(\"deficit\"); pm.expect(o).to.have.property(\"formula_text\"); });",
                          "pm.test(\"the fixed panel buttons\", () => pm.expect(pm.response.json().data.action_buttons.map((b) => b.key)).to.eql([\"edit\", \"cancel\"]));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/needs/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "needs",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_need_id}}",
                          "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل الاحتياج والتغطية.\n\n## Screens\n- P69 Need Details / O− — provider (web) `779:11590`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11590&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11590&scaling=scale-down&content-scaling=fixed)\n- P70 Need Details / AB− — provider (web) `779:11941`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11941&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11941&scaling=scale-down&content-scaling=fixed)\n- P71 Need Details / A+ (تم استيفاء جزء) — provider (web) `779:12301`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-12301&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-12301&scaling=scale-down&content-scaling=fixed)\n- P72 Need Details / A− (جزئي) — provider (web) `779:12652`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-12652&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-12652&scaling=scale-down&content-scaling=fixed)\n- P73 Need Details / B+ (جزئي) — provider (web) `779:13003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-13003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-13003&scaling=scale-down&content-scaling=fixed)\n- P74 Need Details / AB+ (جزئي) — provider (web) `779:13354`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-13354&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-13354&scaling=scale-down&content-scaling=fixed)\n- P75 Need Details / AB− v02 — provider (web) `779:13705`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-13705&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-13705&scaling=scale-down&content-scaling=fixed)\n- P76 Need Details / O− v02 — provider (web) `779:14065`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14065&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14065&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:needs`\n\n## Parameters & fields\n### Path params\n- `id` — required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `NeedResource`: الأولوية، الحالة، المكوّن، الفصيلة · التغطية («تم توفير 6 من 22 — متبقي 16») · الربط بالمخزون (الاحتياج، المتاح، العجز + نص المعادلة) · التفاصيل (الرقم، الكمية، تم توفيره، المتبقي، الموعد، الإنشاء، السبب، الملاحظات) · `admin_closure` (نتيجة إقفال الإدارة: تم التوفير N / تعذّر + السبب — gap P-15).\n2. `action_buttons`: `edit`, `cancel` — متاحان فقط لـ active ولم تلمسه الإدارة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | احتياج خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `needs` (`employee.section:needs`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"needs\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"NEED-2608-001\",\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"quantity\": 22,\n    \"provided_quantity\": 6,\n    \"available\": 8,\n    \"reserved\": 0,\n    \"deficit\": 8,\n    \"coverage_percent\": 27,\n    \"priority\": {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"needed_on\": \"2026-10-21\",\n    \"needed_time\": \"10:00\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/1/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      }\n    ],\n    \"remaining\": 16,\n    \"coverage_text\": \"تم توفير 6 من 22 — متبقي 16\",\n    \"stock_link\": {\n      \"required\": 22,\n      \"available\": 8,\n      \"deficit\": 8,\n      \"formula_text\": \"العجز = المطلوب (22) − المستوفى (6) − المتاح (8) = 8\"\n    },\n    \"reason\": {\n      \"value\": \"low_stock\",\n      \"label\": \"انخفاض المخزون\"\n    },\n    \"notes\": \"انخفاض حاد في مخزون الفصيلة السالبة\",\n    \"created_at\": \"2026-10-14T17:59:36+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"NEED-2608-001\",\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"quantity\": 22,\n    \"provided_quantity\": 6,\n    \"available\": 8,\n    \"reserved\": 0,\n    \"deficit\": 8,\n    \"coverage_percent\": 27,\n    \"priority\": {\n      \"value\": \"critical\",\n      \"label\": \"Critical\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"needed_on\": \"2026-10-21\",\n    \"needed_time\": \"10:00\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/1/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      }\n    ],\n    \"remaining\": 16,\n    \"coverage_text\": \"Provided 6 of 22 — 16 remaining\",\n    \"stock_link\": {\n      \"required\": 22,\n      \"available\": 8,\n      \"deficit\": 8,\n      \"formula_text\": \"Deficit = required (22) − provided (6) − available (8) = 8\"\n    },\n    \"reason\": {\n      \"value\": \"low_stock\",\n      \"label\": \"Low stock\"\n    },\n    \"notes\": \"انخفاض حاد في مخزون الفصيلة السالبة\",\n    \"created_at\": \"2026-10-14T17:59:36+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — احتياج خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم needs (employee.section:needs)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"needs\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "update-need",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"edited need\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"priority\"); pm.expect(o).to.have.property(\"needed_on\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"still active after the edit\", () => pm.expect(pm.response.json().data.status.value).to.eql(\"active\"));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/needs/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "needs",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_need_id}}",
                          "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعديل احتياج نشط.\n\n## Screens\n- P69 Need Details — «تعديل» (gap P-15) — provider (web) `779:11590`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11590&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11590&scaling=scale-down&content-scaling=fixed)\n- P77 Add Blood Requirement (prefilled) — provider (web) `779:14416`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:needs`\n\n## Parameters & fields\n### Path params\n- `id` — required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs · example: `1`\n\n### Body (form-data)\n- `_method` — required · PUT · spoofing · example: `PUT`\n- `donation_type_id` — required · required|exists:donation_types,id · النوع (المكوّن) · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `blood_type` — required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types · example: `O-`\n- `quantity` — required · required|integer|min:1|max:1000 · الكمية (أكياس) · example: `22`\n- `priority` — required · required|Rule::enum(NeedPriority::class) · الأولوية (روتيني/عاجل/حرج — C6) · source: GET {{base_url}}provider/lookups/need-priorities · example: `critical`\n- `needed_on` — required · required|date_format:Y-m-d|after_or_equal:today · تاريخ الاحتياج · example: `2026-10-25`\n- `needed_time` — optional · nullable|date_format:H:i · الوقت (اختياري) · example: `10:00`\n- `reason` — required · required|Rule::enum(NeedReason::class) · السبب · source: GET {{base_url}}provider/lookups/need-reasons · example: `low_stock`\n- `notes` — optional · nullable|string|max:500 · ملاحظات · example: `المخزون أقل من الحد الأدنى`\n\n\n## Behaviour notes\n**Steps:**\n1. مسموح فقط في `active` ولم تقفله الإدارة (`provided_quantity=0` و`closed_at` null) وإلا 409 `need.not_editable`.\n2. نفس حقول الإضافة (`_method=PUT`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/need.updated` → ar «تم تعديل الاحتياج» / en \"Need updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | أقفلته الإدارة/ليس نشطاً | `need.not_editable` | لا يمكن تعديل احتياج أقفلته الإدارة | A closed need can't be edited |\n| 422 | فشل التحقق (…) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | احتياج خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `needs` (`employee.section:needs`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"needs\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n\n> الـ route هو `PUT {{base_url}}provider/needs/{id}`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|exists:donation_types,id · النوع (المكوّن) · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "quantity",
                          "value": "22",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:1000 · الكمية (أكياس)"
                        },
                        {
                          "key": "priority",
                          "value": "critical",
                          "type": "text",
                          "description": "required · required|Rule::enum(NeedPriority::class) · الأولوية (روتيني/عاجل/حرج — C6) · source: GET {{base_url}}provider/lookups/need-priorities"
                        },
                        {
                          "key": "needed_on",
                          "value": "{{d7}}",
                          "type": "text",
                          "description": "required · required|date_format:Y-m-d|after_or_equal:today · تاريخ الاحتياج"
                        },
                        {
                          "key": "needed_time",
                          "value": "10:00",
                          "type": "text",
                          "description": "optional · nullable|date_format:H:i · الوقت (اختياري)"
                        },
                        {
                          "key": "reason",
                          "value": "low_stock",
                          "type": "text",
                          "description": "required · required|Rule::enum(NeedReason::class) · السبب · source: GET {{base_url}}provider/lookups/need-reasons"
                        },
                        {
                          "key": "notes",
                          "value": "المخزون أقل من الحد الأدنى",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تعديل الاحتياج\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"NEED-2608-010\",\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"بلازما\"\n    },\n    \"quantity\": 22,\n    \"provided_quantity\": 0,\n    \"available\": 8,\n    \"reserved\": 0,\n    \"deficit\": 14,\n    \"coverage_percent\": 0,\n    \"priority\": {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"needed_on\": \"2026-10-26\",\n    \"needed_time\": \"10:00\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/10/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      }\n    ],\n    \"remaining\": 22,\n    \"coverage_text\": \"تم توفير 0 من 22 — متبقي 22\",\n    \"stock_link\": {\n      \"required\": 22,\n      \"available\": 8,\n      \"deficit\": 14,\n      \"formula_text\": \"العجز = المطلوب (22) − المستوفى (0) − المتاح (8) = 14\"\n    },\n    \"reason\": {\n      \"value\": \"low_stock\",\n      \"label\": \"انخفاض المخزون\"\n    },\n    \"notes\": \"المخزون أقل من الحد الأدنى\",\n    \"created_at\": \"2026-10-07T18:28:36+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Need updated\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"NEED-2608-010\",\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"Plasma\"\n    },\n    \"quantity\": 22,\n    \"provided_quantity\": 0,\n    \"available\": 8,\n    \"reserved\": 0,\n    \"deficit\": 14,\n    \"coverage_percent\": 0,\n    \"priority\": {\n      \"value\": \"critical\",\n      \"label\": \"Critical\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"needed_on\": \"2026-10-26\",\n    \"needed_time\": \"10:00\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/10/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      }\n    ],\n    \"remaining\": 22,\n    \"coverage_text\": \"Provided 0 of 22 — 22 remaining\",\n    \"stock_link\": {\n      \"required\": 22,\n      \"available\": 8,\n      \"deficit\": 14,\n      \"formula_text\": \"Deficit = required (22) − provided (0) − available (8) = 14\"\n    },\n    \"reason\": {\n      \"value\": \"low_stock\",\n      \"label\": \"Low stock\"\n    },\n    \"notes\": \"المخزون أقل من الحد الأدنى\",\n    \"created_at\": \"2026-10-07T18:28:36+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — أقفلته الإدارة/ليس نشطاً",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تعديل احتياج أقفلته الإدارة\",\n  \"key\": \"not_editable\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (…)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل نوع التبرع مطلوب. (and 5 more errors)\",\n  \"errors\": {\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ],\n    \"blood_type\": [\n      \"الحقل فصيلة الدم مطلوب.\"\n    ],\n    \"quantity\": [\n      \"يجب أن تكون قيمة الحقل الكمية مساوية أو أكبر لـ 1.\"\n    ],\n    \"priority\": [\n      \"الحقل الأولوية مطلوب.\"\n    ],\n    \"needed_on\": [\n      \"الحقل تاريخ الاحتياج مطلوب.\"\n    ],\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — احتياج خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم needs (employee.section:needs)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "22",
                              "type": "text"
                            },
                            {
                              "key": "priority",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "needed_on",
                              "value": "2026-10-26",
                              "type": "text"
                            },
                            {
                              "key": "needed_time",
                              "value": "10:00",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "low_stock",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "المخزون أقل من الحد الأدنى",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"needs\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "cancel-need",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"cancelled need\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"cancelled, edit + cancel switched off\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"cancelled\"); pm.expect(d.action_buttons.every((b) => b.is_available === false)).to.eql(true); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/needs/{id}/cancel",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "needs",
                        "{id}",
                        "cancel"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_need_id}}",
                          "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                        }
                      ]
                    },
                    "description": "## Purpose\nإلغاء احتياج نشط.\n\n## Screens\n- P69 Need Details — «إلغاء» (gap P-15) — provider (web) `779:11590`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11590&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-11590&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:needs`\n\n## Parameters & fields\n### Path params\n- `id` — required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs · example: `1`\n\n### Body (form-data)\n- `reason` — required · required|string|max:500 · سبب الإلغاء · example: `تمت تغطية الاحتياج من الحملة`\n\n\n## Behaviour notes\n**Steps:**\n1. `active` ولم تلمسه الإدارة → `cancelled` + `cancel_reason`, `cancelled_at`.\n\n**Status / state transitions:** `active` → `cancelled`.\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/need.cancelled` → ar «تم إلغاء الاحتياج» / en \"Need cancelled\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | أقفلته الإدارة/ليس نشطاً | `need.not_editable` | لا يمكن تعديل احتياج أقفلته الإدارة | A closed need can't be edited |\n| 422 | فشل التحقق (reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | احتياج خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `needs` (`employee.section:needs`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"needs\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "reason",
                          "value": "تمت تغطية الاحتياج من الحملة",
                          "type": "text",
                          "description": "required · required|string|max:500 · سبب الإلغاء"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تمت تغطية الاحتياج من الحملة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إلغاء الاحتياج\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"NEED-2608-010\",\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"بلازما\"\n    },\n    \"quantity\": 8,\n    \"provided_quantity\": 0,\n    \"available\": 9,\n    \"reserved\": 0,\n    \"deficit\": 0,\n    \"coverage_percent\": 0,\n    \"priority\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"needed_on\": \"2026-10-13\",\n    \"needed_time\": null,\n    \"status\": {\n      \"value\": \"cancelled\",\n      \"label\": \"ملغي\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/10/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      }\n    ],\n    \"remaining\": 8,\n    \"coverage_text\": \"تم توفير 0 من 8 — متبقي 8\",\n    \"stock_link\": {\n      \"required\": 8,\n      \"available\": 9,\n      \"deficit\": 0,\n      \"formula_text\": \"العجز = المطلوب (8) − المستوفى (0) − المتاح (9) = 0\"\n    },\n    \"reason\": {\n      \"value\": \"patient_case\",\n      \"label\": \"حالة مريض\"\n    },\n    \"notes\": \"متأخر عن الموعد المطلوب\",\n    \"created_at\": \"2026-10-07T18:28:36+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تمت تغطية الاحتياج من الحملة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Need cancelled\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"NEED-2608-010\",\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"Plasma\"\n    },\n    \"quantity\": 8,\n    \"provided_quantity\": 0,\n    \"available\": 9,\n    \"reserved\": 0,\n    \"deficit\": 0,\n    \"coverage_percent\": 0,\n    \"priority\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"needed_on\": \"2026-10-13\",\n    \"needed_time\": null,\n    \"status\": {\n      \"value\": \"cancelled\",\n      \"label\": \"Cancelled\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"is_overdue\": false,\n    \"overdue_label\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/needs/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/needs/10/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      }\n    ],\n    \"remaining\": 8,\n    \"coverage_text\": \"Provided 0 of 8 — 8 remaining\",\n    \"stock_link\": {\n      \"required\": 8,\n      \"available\": 9,\n      \"deficit\": 0,\n      \"formula_text\": \"Deficit = required (8) − provided (0) − available (9) = 0\"\n    },\n    \"reason\": {\n      \"value\": \"patient_case\",\n      \"label\": \"Patient case\"\n    },\n    \"notes\": \"متأخر عن الموعد المطلوب\",\n    \"created_at\": \"2026-10-07T18:28:36+00:00\",\n    \"admin_closure\": null\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — أقفلته الإدارة/ليس نشطاً",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تعديل احتياج أقفلته الإدارة\",\n  \"key\": \"not_editable\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل السبب مطلوب.\",\n  \"errors\": {\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — احتياج خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم needs (employee.section:needs)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/needs/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "needs",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_need_id}}",
                              "description": "required · need in scope · الاحتياج · source: GET {{base_url}}provider/needs"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"needs\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `needs` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/need-priorities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-priorities",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-priorities"
                          ]
                        },
                        "description": "## Purpose\nمصدر `priority` (الأولوية: روتيني / عاجل / حرج) — مصدر أولويات الاحتياج في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P77 Add Blood Requirement — provider (web) `779:14416`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&scaling=scale-down&content-scaling=fixed)\n- P68 Blood Requirements — فلتر الأولوية — provider (web) `779:9655`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9655&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9655&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\NeedPriority` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-priorities",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-priorities"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-priorities",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-priorities"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"critical\",\n      \"label\": \"Critical\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-priorities",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-priorities"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-priorities",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-priorities"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/need-reasons",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-reasons"
                          ]
                        },
                        "description": "## Purpose\nمصدر `reason` (سبب الاحتياج) — مصدر أسباب الاحتياج في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P77 Add Blood Requirement (modal) — provider (web) `779:14416`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\NeedReason` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-reasons"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"low_stock\",\n      \"label\": \"انخفاض المخزون\"\n    },\n    {\n      \"value\": \"patient_case\",\n      \"label\": \"حالة مريض\"\n    },\n    {\n      \"value\": \"surgery\",\n      \"label\": \"عملية جراحية\"\n    },\n    {\n      \"value\": \"expected_demand\",\n      \"label\": \"زيادة متوقعة في الطلب\"\n    },\n    {\n      \"value\": \"other\",\n      \"label\": \"أخرى\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-reasons"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"low_stock\",\n      \"label\": \"Low stock\"\n    },\n    {\n      \"value\": \"patient_case\",\n      \"label\": \"Patient case\"\n    },\n    {\n      \"value\": \"surgery\",\n      \"label\": \"Surgery\"\n    },\n    {\n      \"value\": \"expected_demand\",\n      \"label\": \"Expected demand increase\"\n    },\n    {\n      \"value\": \"other\",\n      \"label\": \"Other\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-reasons"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/need-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "need-reasons"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/needs",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "needs",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الاحتياجات على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: needs (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"needs\": 0\n    },\n    \"batch\": \"demo-20261019-001827\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "home",
              "description": "Flow `home` — 1 endpoints (sprint 6). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "home",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"home blocks\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"cards\"); pm.expect(o).to.have.property(\"today_schedule\"); pm.expect(o).to.have.property(\"capacity\"); pm.expect(o).to.have.property(\"ongoing_appeals\"); });",
                          "pm.test(\"four cards\", () => { const o = pm.response.json().data.cards; pm.expect(o).to.have.property(\"today_appointments\"); pm.expect(o).to.have.property(\"current_bookings\"); pm.expect(o).to.have.property(\"active_appeals\"); pm.expect(o).to.have.property(\"weekly_responses\"); });",
                          "pm.test(\"cards carry the number and the sentence under it\", () => { const c = pm.response.json().data.cards; pm.expect(c.today_appointments).to.include.all.keys(\"count\", \"delta\", \"delta_text\"); pm.expect(c.current_bookings).to.include.all.keys(\"count\", \"capacity_percent\", \"capacity_text\"); pm.expect(c.active_appeals).to.include.all.keys(\"count\", \"urgent_count\", \"urgent_text\"); pm.expect(c.weekly_responses).to.include.all.keys(\"count\", \"text\"); });",
                          "pm.test(\"capacity of the day\", () => { const o = pm.response.json().data.capacity; pm.expect(o).to.have.property(\"total\"); pm.expect(o).to.have.property(\"booked\"); pm.expect(o).to.have.property(\"available\"); pm.expect(o).to.have.property(\"percent\"); });",
                          "pm.test(\"schedule rows\", () => { const l = pm.response.json().data.today_schedule; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"appointment_id\"); pm.expect(o).to.have.property(\"donor\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"time\"); } });",
                          "pm.test(\"ongoing appeals\", () => { const l = pm.response.json().data.ongoing_appeals; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"responses\"); pm.expect(o).to.have.property(\"urgency\"); pm.expect(o).to.have.property(\"scope\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"blood_type\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/home",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "home"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nلوحة رئيسية البنك (أرقام اليوم والأسبوع).\n\n## Screens\n- P2 Home — provider (web) `224:2927`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-2927&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-2927&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:home`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1 · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. كل الأرقام من السجلات (cache 60 ث per branch scope):\n2. `cards.today_appointments` (مواعيد اليوم 12 + الفرق عن أمس «+3 من الأمس»)، `cards.current_bookings` (38 + % من الطاقة 67%)، `cards.active_appeals` (5 + «نداءان عاجلان»)، `cards.weekly_responses` (127 هذا الأسبوع).\n3. `today_schedule[]` (المتبرع، النوع، الحالة، الوقت، `appointment_id` للعرض).\n4. `capacity` (الإجمالي/محجوز/متاح %) لليوم.\n5. `ongoing_appeals[]` (الاستجابات، الأولوية، المنطقة، النوع، الفصيلة).\n6. الهيدر من `GET provider/me` (الموظف، المسمى، الجهة، شارة الإشعارات).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `home` (`employee.section:home`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"home\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/home",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"cards\": {\n      \"today_appointments\": {\n        \"count\": 7,\n        \"delta\": -1,\n        \"delta_text\": \"-1 عن الأمس\"\n      },\n      \"current_bookings\": {\n        \"count\": 59,\n        \"capacity_percent\": 2,\n        \"capacity_text\": \"2% من الطاقة\"\n      },\n      \"active_appeals\": {\n        \"count\": 8,\n        \"urgent_count\": 6,\n        \"urgent_text\": \"6 نداءات عاجلة\"\n      },\n      \"weekly_responses\": {\n        \"count\": 22,\n        \"text\": \"هذا الأسبوع\"\n      }\n    },\n    \"today_schedule\": [\n      {\n        \"appointment_id\": 13,\n        \"donor\": {\n          \"name\": \"جواهر سلطان الغامدي\",\n          \"donor_code\": \"DNR-00049\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"01:30 م\",\n        \"starts_at\": \"2026-10-18T13:30:00+00:00\",\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        }\n      },\n      {\n        \"appointment_id\": 436,\n        \"donor\": {\n          \"name\": \"نايف تركي العسيري\",\n          \"donor_code\": \"DNR-00131\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:15 م\",\n        \"starts_at\": \"2026-10-18T19:15:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 435,\n        \"donor\": {\n          \"name\": \"رغد عبدالإله السعدي\",\n          \"donor_code\": \"DNR-00130\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:20 م\",\n        \"starts_at\": \"2026-10-18T19:20:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 1,\n        \"donor\": {\n          \"name\": \"محمد عبدالله العمري\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:34 م\",\n        \"starts_at\": \"2026-10-18T19:34:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 434,\n        \"donor\": {\n          \"name\": \"سامي خالد الرشيدي\",\n          \"donor_code\": \"DNR-00129\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:36 م\",\n        \"starts_at\": \"2026-10-18T19:36:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 423,\n        \"donor\": {\n          \"name\": \"خالد سعد العنزي\",\n          \"donor_code\": \"DNR-00026\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:43 م\",\n        \"starts_at\": \"2026-10-18T19:43:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 433,\n        \"donor\": {\n          \"name\": \"ناصر عبدالرحمن اليامي\",\n          \"donor_code\": \"DNR-00128\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:45 م\",\n        \"starts_at\": \"2026-10-18T19:45:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      }\n    ],\n    \"capacity\": {\n      \"total\": 555,\n      \"booked\": 0,\n      \"available\": 555,\n      \"percent\": 0\n    },\n    \"ongoing_appeals\": [\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 6,\n          \"text\": \"2/6\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 3,\n          \"text\": \"2/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 5,\n          \"text\": \"3/5\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"النزهة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"APL-2608-002\",\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 10,\n          \"text\": \"3/10\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/home",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"cards\": {\n      \"today_appointments\": {\n        \"count\": 7,\n        \"delta\": -1,\n        \"delta_text\": \"-1 vs yesterday\"\n      },\n      \"current_bookings\": {\n        \"count\": 59,\n        \"capacity_percent\": 2,\n        \"capacity_text\": \"2% of capacity\"\n      },\n      \"active_appeals\": {\n        \"count\": 8,\n        \"urgent_count\": 6,\n        \"urgent_text\": \"6 urgent appeals\"\n      },\n      \"weekly_responses\": {\n        \"count\": 22,\n        \"text\": \"This week\"\n      }\n    },\n    \"today_schedule\": [\n      {\n        \"appointment_id\": 13,\n        \"donor\": {\n          \"name\": \"جواهر سلطان الغامدي\",\n          \"donor_code\": \"DNR-00049\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"01:30 PM\",\n        \"starts_at\": \"2026-10-18T13:30:00+00:00\",\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        }\n      },\n      {\n        \"appointment_id\": 436,\n        \"donor\": {\n          \"name\": \"نايف تركي العسيري\",\n          \"donor_code\": \"DNR-00131\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"Plasma\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:15 PM\",\n        \"starts_at\": \"2026-10-18T19:15:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"appointment_id\": 435,\n        \"donor\": {\n          \"name\": \"رغد عبدالإله السعدي\",\n          \"donor_code\": \"DNR-00130\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:20 PM\",\n        \"starts_at\": \"2026-10-18T19:20:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"appointment_id\": 1,\n        \"donor\": {\n          \"name\": \"محمد عبدالله العمري\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:34 PM\",\n        \"starts_at\": \"2026-10-18T19:34:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"appointment_id\": 434,\n        \"donor\": {\n          \"name\": \"سامي خالد الرشيدي\",\n          \"donor_code\": \"DNR-00129\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:36 PM\",\n        \"starts_at\": \"2026-10-18T19:36:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"appointment_id\": 423,\n        \"donor\": {\n          \"name\": \"خالد سعد العنزي\",\n          \"donor_code\": \"DNR-00026\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:43 PM\",\n        \"starts_at\": \"2026-10-18T19:43:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"appointment_id\": 433,\n        \"donor\": {\n          \"name\": \"ناصر عبدالرحمن اليامي\",\n          \"donor_code\": \"DNR-00128\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:45 PM\",\n        \"starts_at\": \"2026-10-18T19:45:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      }\n    ],\n    \"capacity\": {\n      \"total\": 555,\n      \"booked\": 0,\n      \"available\": 555,\n      \"percent\": 0\n    },\n    \"ongoing_appeals\": [\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 6,\n          \"text\": \"2/6\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 3,\n          \"text\": \"2/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 5,\n          \"text\": \"3/5\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Jeddah\",\n          \"district\": \"Al Nuzha\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"APL-2608-002\",\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 10,\n          \"text\": \"3/10\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Jeddah\",\n          \"district\": \"Al Rawdah\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a branch employee (his branch only)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/home",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"cards\": {\n      \"today_appointments\": {\n        \"count\": 6,\n        \"delta\": -1,\n        \"delta_text\": \"-1 عن الأمس\"\n      },\n      \"current_bookings\": {\n        \"count\": 44,\n        \"capacity_percent\": 6,\n        \"capacity_text\": \"6% من الطاقة\"\n      },\n      \"active_appeals\": {\n        \"count\": 4,\n        \"urgent_count\": 4,\n        \"urgent_text\": \"4 نداءات عاجلة\"\n      },\n      \"weekly_responses\": {\n        \"count\": 13,\n        \"text\": \"هذا الأسبوع\"\n      }\n    },\n    \"today_schedule\": [\n      {\n        \"appointment_id\": 436,\n        \"donor\": {\n          \"name\": \"نايف تركي العسيري\",\n          \"donor_code\": \"DNR-00131\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:15 م\",\n        \"starts_at\": \"2026-10-18T19:15:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 435,\n        \"donor\": {\n          \"name\": \"رغد عبدالإله السعدي\",\n          \"donor_code\": \"DNR-00130\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:20 م\",\n        \"starts_at\": \"2026-10-18T19:20:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 1,\n        \"donor\": {\n          \"name\": \"محمد عبدالله العمري\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:34 م\",\n        \"starts_at\": \"2026-10-18T19:34:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 434,\n        \"donor\": {\n          \"name\": \"سامي خالد الرشيدي\",\n          \"donor_code\": \"DNR-00129\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:36 م\",\n        \"starts_at\": \"2026-10-18T19:36:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 423,\n        \"donor\": {\n          \"name\": \"خالد سعد العنزي\",\n          \"donor_code\": \"DNR-00026\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:43 م\",\n        \"starts_at\": \"2026-10-18T19:43:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 433,\n        \"donor\": {\n          \"name\": \"ناصر عبدالرحمن اليامي\",\n          \"donor_code\": \"DNR-00128\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:45 م\",\n        \"starts_at\": \"2026-10-18T19:45:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      }\n    ],\n    \"capacity\": {\n      \"total\": 120,\n      \"booked\": 0,\n      \"available\": 120,\n      \"percent\": 0\n    },\n    \"ongoing_appeals\": [\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 6,\n          \"text\": \"2/6\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 3,\n          \"text\": \"2/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 1,\n        \"code\": \"APL-2608-001\",\n        \"responses\": {\n          \"confirmed\": 8,\n          \"target\": 15,\n          \"text\": \"8/15\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — the owner narrows to one branch",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/home?branch_id=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"cards\": {\n      \"today_appointments\": {\n        \"count\": 6,\n        \"delta\": -1,\n        \"delta_text\": \"-1 عن الأمس\"\n      },\n      \"current_bookings\": {\n        \"count\": 44,\n        \"capacity_percent\": 6,\n        \"capacity_text\": \"6% من الطاقة\"\n      },\n      \"active_appeals\": {\n        \"count\": 4,\n        \"urgent_count\": 4,\n        \"urgent_text\": \"4 نداءات عاجلة\"\n      },\n      \"weekly_responses\": {\n        \"count\": 13,\n        \"text\": \"هذا الأسبوع\"\n      }\n    },\n    \"today_schedule\": [\n      {\n        \"appointment_id\": 436,\n        \"donor\": {\n          \"name\": \"نايف تركي العسيري\",\n          \"donor_code\": \"DNR-00131\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:15 م\",\n        \"starts_at\": \"2026-10-18T19:15:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 435,\n        \"donor\": {\n          \"name\": \"رغد عبدالإله السعدي\",\n          \"donor_code\": \"DNR-00130\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"time\": \"07:20 م\",\n        \"starts_at\": \"2026-10-18T19:20:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 1,\n        \"donor\": {\n          \"name\": \"محمد عبدالله العمري\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:34 م\",\n        \"starts_at\": \"2026-10-18T19:34:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 434,\n        \"donor\": {\n          \"name\": \"سامي خالد الرشيدي\",\n          \"donor_code\": \"DNR-00129\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:36 م\",\n        \"starts_at\": \"2026-10-18T19:36:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 423,\n        \"donor\": {\n          \"name\": \"خالد سعد العنزي\",\n          \"donor_code\": \"DNR-00026\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:43 م\",\n        \"starts_at\": \"2026-10-18T19:43:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"appointment_id\": 433,\n        \"donor\": {\n          \"name\": \"ناصر عبدالرحمن اليامي\",\n          \"donor_code\": \"DNR-00128\",\n          \"is_deleted_account\": false\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"time\": \"07:45 م\",\n        \"starts_at\": \"2026-10-18T19:45:00+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      }\n    ],\n    \"capacity\": {\n      \"total\": 120,\n      \"booked\": 0,\n      \"available\": 120,\n      \"percent\": 0\n    },\n    \"ongoing_appeals\": [\n      {\n        \"id\": 5,\n        \"code\": \"APL-2608-005\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 6,\n          \"text\": \"2/6\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 3,\n          \"text\": \"2/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 1,\n        \"code\": \"APL-2608-001\",\n        \"responses\": {\n          \"confirmed\": 8,\n          \"target\": 15,\n          \"text\": \"8/15\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (branch_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/home?branch_id=999999",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/home",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم home (employee.section:home) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"home\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/home",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "home"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope (owner filter) · الفرع · source: GET {{base_url}}provider/lookups/branches?include_all=1",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"home\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `home` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"a count per section (appointments, donations, inventory, needs, appeals, offers, tickets, notifications)\", () => { const c = pm.response.json().data.created; pm.expect(c).to.have.property(\"appointments\"); pm.expect(c.appointments).to.be.a(\"number\"); pm.expect(c).to.have.property(\"donations\"); pm.expect(c.donations).to.be.a(\"number\"); pm.expect(c).to.have.property(\"inventory\"); pm.expect(c.inventory).to.be.a(\"number\"); pm.expect(c).to.have.property(\"needs\"); pm.expect(c.needs).to.be.a(\"number\"); pm.expect(c).to.have.property(\"appeals\"); pm.expect(c.appeals).to.be.a(\"number\"); pm.expect(c).to.have.property(\"offers\"); pm.expect(c.offers).to.be.a(\"number\"); pm.expect(c).to.have.property(\"tickets\"); pm.expect(c.tickets).to.be.a(\"number\"); pm.expect(c).to.have.property(\"notifications\"); pm.expect(c.notifications).to.be.a(\"number\"); });",
                              "pm.test(\"batch id\", () => pm.expect(pm.response.json().data.batch).to.match(/^demo-/));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ كل الأقسام على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. الـ owner يملأ **كل فروع جهته** أو `branch_id`؛ الموظف يملأ فرعه.\n2. الأقسام بالترتيب: appointments → donations → inventory → needs → appeals → offers → tickets → notifications.\n3. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n4. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n5. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n6. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n7. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n8. `offers`: عروض بكل حالات المسار + محادثة.\n9. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n10. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n11. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n12. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n13. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7,\n      \"donations\": 12,\n      \"inventory\": 24,\n      \"needs\": 6,\n      \"appeals\": 6,\n      \"offers\": 7,\n      \"tickets\": 4,\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001814\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7,\n      \"donations\": 12,\n      \"inventory\": 24,\n      \"needs\": 0,\n      \"appeals\": 6,\n      \"offers\": 0,\n      \"tickets\": 0,\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001822\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success: branch employee fills his own branch only",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7,\n      \"donations\": 12,\n      \"inventory\": 24,\n      \"needs\": 6,\n      \"appeals\": 6,\n      \"offers\": 7,\n      \"tickets\": 4,\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001848\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "0",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "9",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة الحقل العدد مساوية أو أكبر لـ 1. (and 1 more error)\",\n  \"errors\": {\n    \"count\": [\n      \"يجب أن تكون قيمة الحقل العدد مساوية أو أكبر لـ 1.\"\n    ],\n    \"per_status\": [\n      \"لا يجب ان تكون قيمة حقل العدد لكل حالة اكبر من 5.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — branch_id خارج نطاق الموظف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "2",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "appeals",
              "description": "Flow `appeals` — 8 endpoints (sprint 6). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "appeals",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"appeal rows (status, source, responses n/m, urgency, scope, buttons)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"responses\"); pm.expect(o).to.have.property(\"urgency\"); pm.expect(o).to.have.property(\"scope\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated + counts\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); pm.expect(o).to.have.property(\"meta\"); });",
                          "pm.test(\"counts (active, urgent, responses)\", () => { const o = pm.response.json().data.meta.counts; pm.expect(o).to.have.property(\"active\"); pm.expect(o).to.have.property(\"urgent\"); pm.expect(o).to.have.property(\"responses\"); });",
                          "pm.test(\"the fixed panel buttons\", () => { const l = pm.response.json().data.data; if (l.length) pm.expect(l[0].action_buttons.map((b) => b.key)).to.eql([\"pause\", \"resume\", \"close\", \"edit\"]); });",
                          "{ const l = pm.response.json().data.data; const a = l.find((x) => x.status.value === \"active\") || l[0]; if (a) { pm.collectionVariables.set(\"provider_appeal_id\", a.id); pm.environment.set(\"provider_appeal_id\", a.id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals"
                      ],
                      "query": [
                        {
                          "key": "status",
                          "value": "active",
                          "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                          "disabled": true
                        },
                        {
                          "key": "urgency",
                          "value": "urgent",
                          "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                          "disabled": true
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "description": "optional · nullable|exists:donation_types,id · النوع",
                          "disabled": true
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                          "disabled": true
                        },
                        {
                          "key": "source",
                          "value": "hospital",
                          "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "APL-2608",
                          "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                          "disabled": true
                        },
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة نداءات الفرع ونداءات المستخدمين المعتمدة.\n\n## Screens\n- P7 Donation Appeals (list) — provider (web) `224:11585`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-11585&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-11585&scaling=scale-down&content-scaling=fixed)\n- P8 status dropdown — provider (web) `245:5554`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-5554&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-5554&scaling=scale-down&content-scaling=fixed)\n- P9 donation type dropdown — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P10 urgency dropdown — provider (web) `245:6635`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&scaling=scale-down&content-scaling=fixed)\n- P11 blood type dropdown — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n- G-P16 تبويب «نداءات المستخدمين» (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Query params\n- `status` — optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses · example: `active`\n- `urgency` — optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية · example: `urgent`\n- `donation_type_id` — optional · nullable|exists:donation_types,id · النوع · example: `1`\n- `blood_type` — optional · nullable|Rule::enum(BloodType::class) · الفصيلة · example: `O-`\n- `source` — optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين · example: `hospital`\n- `search` — optional · nullable|string|max:50 · الرقم/المنطقة · example: `APL-2608`\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. نداءات فروع النطاق: مصدر `hospital` + نداءات المستخدمين المعتمدة على الفرع (`source=user`, status ≠ under_review/rejected).\n2. فلاتر: `status`, `urgency`, `donation_type_id`, `blood_type`, `source`, `search` (الرقم/المنطقة)، `branch_id`.\n3. `meta.counts{active, urgent, responses}` = «4 نشط، 1 عاجل، 44 استجابة».\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (status, urgency, source) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "hospital",
                              "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "APL-2608",
                              "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"created_at\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 3,\n          \"text\": \"2/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/34\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 33,\n        \"code\": \"APL-2609-008\",\n        \"created_at\": \"2026-09-13\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 2,\n          \"text\": \"2/2\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/33/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/33/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/33/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/33\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 32,\n        \"code\": \"APL-2609-007\",\n        \"created_at\": \"2026-09-18\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 5,\n          \"text\": \"2/5\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"مكة المكرمة\",\n          \"district\": \"العزيزية\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 4,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/32/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/32/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/32/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/32\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 31,\n        \"code\": \"APL-2610-018\",\n        \"created_at\": \"2026-10-15\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 6,\n          \"text\": \"1/6\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"الدمام\",\n          \"district\": \"الشاطئ\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/31/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/31/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/31/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/31\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 30,\n        \"code\": \"APL-2610-017\",\n        \"created_at\": \"2026-10-09\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 1,\n          \"text\": \"0/1\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/30\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 24,\n        \"code\": \"APL-2609-006\",\n        \"created_at\": \"2026-09-18\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 1,\n          \"text\": \"0/1\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/24\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 23,\n        \"code\": \"APL-2609-005\",\n        \"created_at\": \"2026-09-26\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 2,\n          \"text\": \"1/2\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"الدمام\",\n          \"district\": \"الشاطئ\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/23\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 22,\n        \"code\": \"APL-2610-011\",\n        \"created_at\": \"2026-10-11\",\n        \"status\": {\n          \"value\": \"paused\",\n          \"label\": \"معلق\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 2,\n          \"text\": \"1/2\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"الدمام\",\n          \"district\": \"الشاطئ\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/22\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 21,\n        \"code\": \"APL-2609-004\",\n        \"created_at\": \"2026-09-30\",\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"تم الاستيفاء\",\n          \"color\": \"#4B5563\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 1,\n          \"text\": \"1/1\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/21\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 20,\n        \"code\": \"APL-2610-010\",\n        \"created_at\": \"2026-10-15\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 2,\n          \"text\": \"0/2\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/20\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"created_at\": \"2026-10-16\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/19\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 18,\n        \"code\": \"APL-2610-008\",\n        \"created_at\": \"2026-10-03\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/18\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"created_at\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 5,\n          \"text\": \"3/5\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"النزهة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 12,\n        \"code\": \"APL-2609-001\",\n        \"created_at\": \"2026-09-08\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 6,\n          \"text\": \"2/6\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/12/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/12/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/12/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/12\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 11,\n        \"code\": \"APL-2610-004\",\n        \"created_at\": \"2026-10-04\",\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"تم الاستيفاء\",\n          \"color\": \"#4B5563\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 4,\n          \"target\": 3,\n          \"text\": \"4/3\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/11/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/11/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/11/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/11\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 22,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"counts\": {\n        \"active\": 8,\n        \"urgent\": 6,\n        \"responses\": 20\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "hospital",
                              "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "APL-2608",
                              "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"created_at\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"Hospital\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 3,\n          \"text\": \"2/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/34\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 33,\n        \"code\": \"APL-2609-008\",\n        \"created_at\": \"2026-09-13\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"Hospital\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 2,\n          \"text\": \"2/2\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/33/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/33/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/33/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/33\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 32,\n        \"code\": \"APL-2609-007\",\n        \"created_at\": \"2026-09-18\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"Hospital\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 5,\n          \"text\": \"2/5\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Mecca\",\n          \"district\": \"Al Aziziyah\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 4,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Makkah Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/32/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/32/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/32/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/32\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 31,\n        \"code\": \"APL-2610-018\",\n        \"created_at\": \"2026-10-15\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"Hospital\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 6,\n          \"text\": \"1/6\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Dammam\",\n          \"district\": \"Al Shati\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"Plasma\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/31/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/31/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/31/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/31\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 30,\n        \"code\": \"APL-2610-017\",\n        \"created_at\": \"2026-10-09\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 1,\n          \"text\": \"0/1\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Jeddah\",\n          \"district\": \"Al Rawdah\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/30\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 24,\n        \"code\": \"APL-2609-006\",\n        \"created_at\": \"2026-09-18\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 1,\n          \"text\": \"0/1\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"Plasma\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/24\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 23,\n        \"code\": \"APL-2609-005\",\n        \"created_at\": \"2026-09-26\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 2,\n          \"text\": \"1/2\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"Dammam\",\n          \"district\": \"Al Shati\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/23\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 22,\n        \"code\": \"APL-2610-011\",\n        \"created_at\": \"2026-10-11\",\n        \"status\": {\n          \"value\": \"paused\",\n          \"label\": \"Paused\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 2,\n          \"text\": \"1/2\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"Dammam\",\n          \"district\": \"Al Shati\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/22\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 21,\n        \"code\": \"APL-2609-004\",\n        \"created_at\": \"2026-09-30\",\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"Fulfilled\",\n          \"color\": \"#4B5563\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 1,\n          \"text\": \"1/1\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/21\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 20,\n        \"code\": \"APL-2610-010\",\n        \"created_at\": \"2026-10-15\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 2,\n          \"text\": \"0/2\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Jeddah\",\n          \"district\": \"Al Rawdah\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/20\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"created_at\": \"2026-10-16\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/19\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 18,\n        \"code\": \"APL-2610-008\",\n        \"created_at\": \"2026-10-03\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Riyadh\",\n          \"district\": \"Olaya\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/18\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"created_at\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"User\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 5,\n          \"text\": \"3/5\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"Urgent\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"Jeddah\",\n          \"district\": \"Al Nuzha\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 12,\n        \"code\": \"APL-2609-001\",\n        \"created_at\": \"2026-09-08\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"Hospital\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 6,\n          \"text\": \"2/6\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Jeddah\",\n          \"district\": \"Al Rawdah\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/12/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/12/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/12/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/12\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 11,\n        \"code\": \"APL-2610-004\",\n        \"created_at\": \"2026-10-04\",\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"Fulfilled\",\n          \"color\": \"#4B5563\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"Hospital\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 4,\n          \"target\": 3,\n          \"text\": \"4/3\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"Routine\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"Jeddah\",\n          \"district\": \"Al Rawdah\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"Pause\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/11/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"Resume\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/11/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"Close\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/11/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/11\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 22,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"counts\": {\n        \"active\": 8,\n        \"urgent\": 6,\n        \"responses\": 20\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — filtered (urgent, active)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals?status=active&urgency=urgent",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "hospital",
                              "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "APL-2608",
                              "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 34,\n        \"code\": \"APL-2610-019\",\n        \"created_at\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 2,\n          \"target\": 3,\n          \"text\": \"2/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/34/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/34\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"created_at\": \"2026-10-16\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/19\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"created_at\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 5,\n          \"text\": \"3/5\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"النزهة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"APL-2608-002\",\n        \"created_at\": \"2026-10-16\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 10,\n          \"text\": \"3/10\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/2/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/2/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/2/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/2\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 1,\n        \"code\": \"APL-2608-001\",\n        \"created_at\": \"2026-10-15\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"hospital\",\n          \"label\": \"مستشفى\",\n          \"color\": \"#1D4ED8\",\n          \"bg_color\": \"#EFF6FF\"\n        },\n        \"responses\": {\n          \"confirmed\": 8,\n          \"target\": 15,\n          \"text\": \"8/15\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/1/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/1/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/1/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/1\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 5,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 5\n    },\n    \"meta\": {\n      \"counts\": {\n        \"active\": 8,\n        \"urgent\": 6,\n        \"responses\": 20\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — the user appeals approved for the branch",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals?source=user",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "hospital",
                              "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "APL-2608",
                              "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 30,\n        \"code\": \"APL-2610-017\",\n        \"created_at\": \"2026-10-09\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 1,\n          \"text\": \"0/1\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/30/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/30\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 24,\n        \"code\": \"APL-2609-006\",\n        \"created_at\": \"2026-09-18\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 1,\n          \"text\": \"0/1\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/24/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/24\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 23,\n        \"code\": \"APL-2609-005\",\n        \"created_at\": \"2026-09-26\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 2,\n          \"text\": \"1/2\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"الدمام\",\n          \"district\": \"الشاطئ\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/23/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/23\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 22,\n        \"code\": \"APL-2610-011\",\n        \"created_at\": \"2026-10-11\",\n        \"status\": {\n          \"value\": \"paused\",\n          \"label\": \"معلق\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 2,\n          \"text\": \"1/2\"\n        },\n        \"urgency\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"scope\": {\n          \"city\": \"الدمام\",\n          \"district\": \"الشاطئ\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"branch\": {\n          \"id\": 3,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/22/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/22\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 21,\n        \"code\": \"APL-2609-004\",\n        \"created_at\": \"2026-09-30\",\n        \"status\": {\n          \"value\": \"fulfilled\",\n          \"label\": \"تم الاستيفاء\",\n          \"color\": \"#4B5563\",\n          \"bg_color\": \"#F3F4F6\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 1,\n          \"text\": \"1/1\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/21/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/21\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 20,\n        \"code\": \"APL-2610-010\",\n        \"created_at\": \"2026-10-15\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 0,\n          \"target\": 2,\n          \"text\": \"0/2\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"الروضة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/20/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/20\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 19,\n        \"code\": \"APL-2610-009\",\n        \"created_at\": \"2026-10-16\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/19/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/19\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 18,\n        \"code\": \"APL-2610-008\",\n        \"created_at\": \"2026-10-03\",\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 1,\n          \"target\": 3,\n          \"text\": \"1/3\"\n        },\n        \"urgency\": {\n          \"value\": \"routine\",\n          \"label\": \"روتيني\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"scope\": {\n          \"city\": \"الرياض\",\n          \"district\": \"العليا\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/18/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/18\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"code\": \"APL-2610-007\",\n        \"created_at\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"source\": {\n          \"value\": \"user\",\n          \"label\": \"مستخدم\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"responses\": {\n          \"confirmed\": 3,\n          \"target\": 5,\n          \"text\": \"3/5\"\n        },\n        \"urgency\": {\n          \"value\": \"urgent\",\n          \"label\": \"عاجل\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"scope\": {\n          \"city\": \"جدة\",\n          \"district\": \"النزهة\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"branch\": {\n          \"id\": 2,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"pause\",\n            \"label\": \"تعليق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/pause\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"resume\",\n            \"label\": \"استئناف\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/resume\",\n            \"style\": \"success\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"close\",\n            \"label\": \"إغلاق\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/appeals/15/close\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/appeals/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 9,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 9\n    },\n    \"meta\": {\n      \"counts\": {\n        \"active\": 8,\n        \"urgent\": 6,\n        \"responses\": 20\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status, urgency, source)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals?status=nope&urgency=nope&source=nope",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "hospital",
                              "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "APL-2608",
                              "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الحالة غير صالح. (and 2 more errors)\",\n  \"errors\": {\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ],\n    \"urgency\": [\n      \"حقل المحدد نوع الحالة غير صالح.\"\n    ],\n    \"source\": [\n      \"حقل المحدد المصدر غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "hospital",
                              "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "APL-2608",
                              "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|Rule::enum(AppealStatus::class) · الحالة · source: GET {{base_url}}lookups/appeal-statuses",
                              "disabled": true
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "description": "optional · nullable|Rule::enum(AppealUrgency::class) · الأولوية",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id · النوع",
                              "disabled": true
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "description": "optional · nullable|Rule::enum(BloodType::class) · الفصيلة",
                              "disabled": true
                            },
                            {
                              "key": "source",
                              "value": "hospital",
                              "description": "optional · nullable|Rule::enum(AppealSource::class) · نداءات الفرع / المستخدمين",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "APL-2608",
                              "description": "optional · nullable|string|max:50 · الرقم/المنطقة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "create-appeal",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"published appeal\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"responses\"); pm.expect(o).to.have.property(\"urgency\"); pm.expect(o).to.have.property(\"scope\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"targeted_count\"); pm.expect(o).to.have.property(\"response_rate\"); pm.expect(o).to.have.property(\"response_state\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"a hospital appeal is active at once (no drafts)\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"active\"); pm.expect(d.source.value).to.eql(\"hospital\"); pm.expect(d.code).to.match(/^APL-/); });",
                          "{ const id = pm.response.json().data.id; if (id) { pm.collectionVariables.set(\"provider_appeal_id\", id); pm.environment.set(\"provider_appeal_id\", id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals"
                      ]
                    },
                    "description": "## Purpose\nإنشاء نداء مستشفى ونشره فوراً.\n\n## Screens\n- P19 Create Appeal / Enter Details (1/3) — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n- P3 Create Appeal / Review — provider (web) `224:5095`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-5095&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-5095&scaling=scale-down&content-scaling=fixed)\n- P4 Confirmation modal «تأكيد إرسال النداء» — provider (web) `224:5374`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-5374&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-5374&scaling=scale-down&content-scaling=fixed)\n- P5 Appeal Submitted — provider (web) `224:5701`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-5701&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-5701&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Body (form-data)\n- `branch_id` — owner: required · required for owner (>1 branch) | ignored for branch employee | exists in scope (active) · الفرع / المستشفى (gap G-P11) · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `file_no` — optional · nullable|string|max:50 · رقم الملف (اختياري) · example: `MRN-1201`\n- `patient_name` — optional · nullable|string|max:150 · اسم المريض (اختياري — C16)\n- `blood_type` — required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types · example: `O-`\n- `urgency` — required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني — C5) · source: GET {{base_url}}lookups/appeal-urgencies · example: `urgent`\n- `required_units` — required · required|integer|min:1|max:100 · عدد الوحدات · example: `15`\n- `donation_type_id` — required · required|exists:donation_types,id + offered by branch · النوع · source: GET {{base_url}}lookups/donation-types?branch_id=1 · example: `1`\n- `district_id` — optional · nullable|exists:districts,id (city of branch) · الحي (النطاق) · source: GET {{base_url}}cities/{id}/districts · example: `3`\n- `required_time_type` — required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times · example: `today`\n- `required_at` — required_if:required_time_type,specific · nullable|required_if:…,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت\n- `medical_message` — optional · nullable|string|max:500 · ملاحظات عن الحالة (≤500) · example: `حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة`\n\n\n## Behaviour notes\n**Steps:**\n1. C7: لا مسودات — المراجعة (P3) client-side؛ «تأكيد وإرسال» = هذا الطلب → **نشط فوراً**.\n2. المستشفى = فرع الموظف تلقائياً؛ الـ owner يختار `branch_id` (P-11). المدينة من الفرع.\n3. ينشئ `appeals` (`source=hospital`, `status=active`, `published_at=now`, `expires_at` = `required_at` أو `now + appeal_default_expiry_days`)، creator=Employee، code APL-.\n4. يُطلق `TargetAppealDonorsJob` (مرة واحدة): متبرعو مدينة الفرع + فصيلة متوافقة (`blood_compatibilities` للنوع) + مؤهلون (فترة الانتظار/الاستبعاد) + بلا حجز قائم + `is_notify` → push `appeal_targeted`؛ يحدّث `targeted_count`.\n\n**Status / state transitions:** `AppealStatus`: — → `active`.\n\n**Side effects (Laravel-first):**\n- `AppealPublished` event → `TargetAppealDonorsJob` (queued, chunked 500, idempotent by appeal id).\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appeal_targeted` | المتبرعون المستهدفون (مرة واحدة) | نداء تبرع عاجل / Urgent donation appeal | هناك حاجة :urgency لفصيلة :blood_type في :branch | appeal_id | U41 |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.created_hospital` → ar «تم إرسال النداء بنجاح — سيصل تنبيه للمتبرعين المستهدفين في المنطقة المحددة» / en \"Appeal sent — matching donors will be alerted\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (blood_type, urgency, required_units, donation_type_id, required_time_type) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | الفرع لا يقدم النوع | `booking.type_not_offered` | نوع التبرع غير متاح في هذا المركز | This donation type isn't offered at this center |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "owner: required · required for owner (>1 branch) | ignored for branch employee | exists in scope (active) · الفرع / المستشفى (gap G-P11) · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "file_no",
                          "value": "MRN-1201",
                          "type": "text",
                          "description": "optional · nullable|string|max:50 · رقم الملف (اختياري)"
                        },
                        {
                          "key": "patient_name",
                          "value": "",
                          "type": "text",
                          "description": "optional · nullable|string|max:150 · اسم المريض (اختياري — C16)"
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "urgency",
                          "value": "urgent",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني — C5) · source: GET {{base_url}}lookups/appeal-urgencies"
                        },
                        {
                          "key": "required_units",
                          "value": "15",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:100 · عدد الوحدات"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:donation_types,id + offered by branch · النوع · source: GET {{base_url}}lookups/donation-types?branch_id=1"
                        },
                        {
                          "key": "district_id",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|exists:districts,id (city of branch) · الحي (النطاق) · source: GET {{base_url}}cities/{id}/districts"
                        },
                        {
                          "key": "required_time_type",
                          "value": "today",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times"
                        },
                        {
                          "key": "required_at",
                          "value": "",
                          "type": "text",
                          "description": "required_if:required_time_type,specific · nullable|required_if:…,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت"
                        },
                        {
                          "key": "medical_message",
                          "value": "حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات عن الحالة (≤500)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-1201",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال النداء بنجاح — سيصل تنبيه للمتبرعين المستهدفين في المنطقة المحددة\",\n  \"data\": {\n    \"id\": 62,\n    \"code\": \"APL-2610-020\",\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 0,\n      \"target\": 15,\n      \"text\": \"0/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": null\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"today\",\n      \"label\": \"اليوم\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-1201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-18T20:07:24+00:00\",\n    \"expires_at\": \"2026-10-25T20:07:24+00:00\",\n    \"targeted_count\": 0,\n    \"response_rate\": {\n      \"confirmed\": 0,\n      \"target\": 15,\n      \"percent\": 0\n    },\n    \"responses_by_status\": [],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/62/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/62/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/62/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/62\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-1201",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal sent — matching donors will be alerted\",\n  \"data\": {\n    \"id\": 63,\n    \"code\": \"APL-2610-020\",\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"Hospital\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 0,\n      \"target\": 15,\n      \"text\": \"0/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"Riyadh\",\n      \"district\": null\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"today\",\n      \"label\": \"Today\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-1201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-18T20:07:24+00:00\",\n    \"expires_at\": \"2026-10-25T20:07:24+00:00\",\n    \"targeted_count\": 0,\n    \"response_rate\": {\n      \"confirmed\": 0,\n      \"target\": 15,\n      \"percent\": 0\n    },\n    \"responses_by_status\": [],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"Accepting responses\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"Pause\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/63/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"Resume\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/63/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/63/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/63\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a fixed time",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "required_time_type",
                              "value": "specific",
                              "type": "text"
                            },
                            {
                              "key": "required_at",
                              "value": "2026-10-21 10:00",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-1201",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال النداء بنجاح — سيصل تنبيه للمتبرعين المستهدفين في المنطقة المحددة\",\n  \"data\": {\n    \"id\": 64,\n    \"code\": \"APL-2610-020\",\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 0,\n      \"target\": 15,\n      \"text\": \"0/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": null\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"specific\",\n      \"label\": \"تحديد تاريخ ووقت\"\n    },\n    \"required_at\": \"2026-10-21T10:00:00+00:00\",\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-1201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-18T20:07:24+00:00\",\n    \"expires_at\": \"2026-10-21T10:00:00+00:00\",\n    \"targeted_count\": 0,\n    \"response_rate\": {\n      \"confirmed\": 0,\n      \"target\": 15,\n      \"percent\": 0\n    },\n    \"responses_by_status\": [],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/64/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/64/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/64/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/64\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (blood_type, urgency, required_units, donation_type_id, required_time_type)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل فصيلة الدم مطلوب. (and 4 more errors)\",\n  \"errors\": {\n    \"blood_type\": [\n      \"الحقل فصيلة الدم مطلوب.\"\n    ],\n    \"urgency\": [\n      \"الحقل نوع الحالة مطلوب.\"\n    ],\n    \"required_units\": [\n      \"الحقل عدد الوحدات مطلوب.\"\n    ],\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ],\n    \"required_time_type\": [\n      \"الحقل الموعد المطلوب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — الفرع لا يقدم النوع",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-1201",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"نوع التبرع غير متاح في هذا المركز\",\n  \"key\": \"type_not_offered\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-1201",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "urgent",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة",
                              "type": "text"
                            },
                            {
                              "key": "file_no",
                              "value": "MRN-1201",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"appeal details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"source\"); pm.expect(o).to.have.property(\"responses\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"required_time\"); pm.expect(o).to.have.property(\"notes\"); pm.expect(o).to.have.property(\"file_no\"); pm.expect(o).to.have.property(\"patient_name\"); pm.expect(o).to.have.property(\"requester\"); pm.expect(o).to.have.property(\"published_at\"); pm.expect(o).to.have.property(\"expires_at\"); pm.expect(o).to.have.property(\"targeted_count\"); pm.expect(o).to.have.property(\"response_rate\"); pm.expect(o).to.have.property(\"responses_by_status\"); pm.expect(o).to.have.property(\"response_state\"); pm.expect(o).to.have.property(\"paused_banner\"); pm.expect(o).to.have.property(\"closed_reason\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"response rate + state\", () => { const d = pm.response.json().data; [\"confirmed\", \"target\", \"percent\"].forEach((k) => pm.expect(d.response_rate).to.have.property(k)); pm.expect([\"open\", \"capped\", \"closed\", \"incompatible\"]).to.include(d.response_state.value); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appeal_id}}",
                          "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل نداء + أزراره.\n\n## Screens\n- P6 Appeal Details / عاجل — provider (web) `224:6547`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&scaling=scale-down&content-scaling=fixed)\n- P12 Appeal Details 001 v02 (أسماء المتبرعين) — provider (web) `224:12355`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12355&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12355&scaling=scale-down&content-scaling=fixed)\n- P13 Details 002 (نشط) — provider (web) `224:12946`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12946&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12946&scaling=scale-down&content-scaling=fixed)\n- P14 Details 003 (تم الاستيفاء) — provider (web) `224:13422`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13422&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13422&scaling=scale-down&content-scaling=fixed)\n- P15 Details 004 — معلق — provider (web) `224:13888`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13888&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13888&scaling=scale-down&content-scaling=fixed)\n- P16 Details 005 — provider (web) `224:14364`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14364&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14364&scaling=scale-down&content-scaling=fixed)\n- P17 Details 2407-018 — مكتمل — provider (web) `224:14819`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14819&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14819&scaling=scale-down&content-scaling=fixed)\n- P18 Details 2407-012 — مغلق — provider (web) `224:15217`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-15217&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-15217&scaling=scale-down&content-scaling=fixed)\n- G-P14 أزرار تعليق/استئناف/إغلاق/تعديل + بانر (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `ProviderAppealResource`: الحالة + الأولوية، الفصيلة، النوع، النطاق، تاريخ الإنشاء، الملاحظات، معلومات النداء، نسبة الاستجابة (8 من 15)، توزيع الاستجابات حسب حالة الحجز، `paused_banner`، `closed_reason` («تم الإغلاق — انتهاء الحاجة»).\n2. نداء مستخدم: يضيف بيانات المريض وصاحب النداء (`file_no`, `patient_name`, `requester{relation,name,phone}`) — P-16.\n3. `action_buttons` = pause · resume (مصدر hospital فقط) · close · edit (hospital، active/paused).\n4. جدول الاستجابات منفصل: `GET provider/appeals/{id}/responses`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | نداء خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"text\": \"8/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"percent\": 53\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"Hospital\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"text\": \"8/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"Riyadh\",\n      \"district\": \"Olaya\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"percent\": 53\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"Rejected\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"Accepting responses\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"Pause\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"Resume\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a donor appeal (patient + requester)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 19,\n    \"code\": \"APL-2610-009\",\n    \"created_at\": \"2026-10-16\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses\": {\n      \"confirmed\": 1,\n      \"target\": 3,\n      \"text\": \"1/3\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 3,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"notes\": \"نحتاج متبرعين لحالة خالد في أقرب وقت ممكن\",\n    \"file_no\": null,\n    \"patient_name\": \"خالد\",\n    \"requester\": {\n      \"relation\": {\n        \"value\": \"father\",\n        \"label\": \"الأب\"\n      },\n      \"name\": \"عبدالله الشهري\",\n      \"phone\": \"560000002\"\n    },\n    \"case_description\": \"حالة تحتاج نقل دم\",\n    \"diagnosis\": \"فقر دم حاد\",\n    \"published_at\": \"2026-10-16T21:26:59+00:00\",\n    \"expires_at\": \"2026-10-23T21:26:59+00:00\",\n    \"targeted_count\": 12,\n    \"response_rate\": {\n      \"confirmed\": 1,\n      \"target\": 3,\n      \"percent\": 33\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 1\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/19/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/19/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/19/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/19\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a closed appeal (closed_reason)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 7,\n    \"code\": \"APL-2607-012\",\n    \"created_at\": \"2026-08-19\",\n    \"status\": {\n      \"value\": \"closed\",\n      \"label\": \"مغلق\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 4,\n      \"target\": 8,\n      \"text\": \"4/8\"\n    },\n    \"urgency\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"scope\": {\n      \"city\": \"الدمام\",\n      \"district\": \"الشاطئ\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"بلازما\"\n    },\n    \"blood_type\": {\n      \"value\": \"B-\",\n      \"label\": \"B-\"\n    },\n    \"branch\": {\n      \"id\": 3,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n    },\n    \"required_units\": 8,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"notes\": \"احتياج بلازما لمريض غسيل كلوي\",\n    \"file_no\": null,\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-08-19T15:55:57+00:00\",\n    \"expires_at\": \"2026-08-26T15:55:57+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 4,\n      \"target\": 8,\n      \"percent\": 50\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 4\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"لا يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": \"تم الإغلاق — انتهاء الحاجة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/7/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/7/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/7/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/7\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — نداء خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "appeal-responses",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"responses (donor, DNR- code, times, colored booking status)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"appointment_id\"); pm.expect(o).to.have.property(\"donor\"); pm.expect(o).to.have.property(\"responded_at\"); pm.expect(o).to.have.property(\"appointment_at\"); pm.expect(o).to.have.property(\"booking_status\"); pm.expect(o).to.have.property(\"response_status\"); } });",
                          "pm.test(\"paginated + empty text\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); pm.expect(o).to.have.property(\"meta\"); });",
                          "pm.test(\"empty list carries its text\", () => { const d = pm.response.json().data; if (d.data.length === 0) pm.expect(d.meta.empty_text).to.be.a(\"string\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals/{id}/responses",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals",
                        "{id}",
                        "responses"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appeal_id}}",
                          "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                        }
                      ],
                      "query": [
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nجدول المستجيبين للنداء.\n\n## Screens\n- P6 Appeal Details — جدول الاستجابات — provider (web) `224:6547`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&scaling=scale-down&content-scaling=fixed)\n- P12 v02 (أسماء المتبرعين) — provider (web) `224:12355`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12355&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12355&scaling=scale-down&content-scaling=fixed)\n- P17 empty «لا توجد استجابات — لم يستجب أي متبرع حتى الآن» — provider (web) `224:14819`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14819&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14819&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals · example: `1`\n\n### Query params\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. الحجوزات المرتبطة بالنداء (`appointments.appeal_id`): اسم المتبرع + `DNR-` (brief §7.1) + `is_deleted_account`، التاريخ، الوقت، الموعد، حالة الحجز (ملوّنة: مقبول/بانتظار الموعد/لم يتم التأكيد…)، `appointment_id` لفتح التفاصيل.\n2. فارغة → `data.data=[]` + `meta.empty_text`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | نداء خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/responses",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "responses"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"appointment_id\": 12,\n        \"donor\": {\n          \"name\": \"عبدالملك نواف الصاعدي\",\n          \"donor_code\": \"DNR-00048\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T14:56:54+00:00\",\n        \"appointment_at\": \"2026-10-20T09:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"لم يتم التأكيد\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 11,\n        \"donor\": {\n          \"name\": \"سعد عمر اليامي\",\n          \"donor_code\": \"DNR-00047\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T21:45:54+00:00\",\n        \"appointment_at\": \"2026-10-24T09:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"لم يتم التأكيد\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 10,\n        \"donor\": {\n          \"name\": \"لطيفة راشد السعدي\",\n          \"donor_code\": \"DNR-00046\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T04:03:54+00:00\",\n        \"appointment_at\": \"2026-10-24T10:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"لم يتم التأكيد\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 9,\n        \"donor\": {\n          \"name\": \"لطيفة تركي العتيبي\",\n          \"donor_code\": \"DNR-00045\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T04:08:54+00:00\",\n        \"appointment_at\": \"2026-10-21T08:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"لم يتم التأكيد\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 8,\n        \"donor\": {\n          \"name\": \"هند عبدالله المرواني\",\n          \"donor_code\": \"DNR-00044\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T03:29:54+00:00\",\n        \"appointment_at\": \"2026-10-21T08:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"بانتظار الموعد\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 7,\n        \"donor\": {\n          \"name\": \"هيا راشد القحطاني\",\n          \"donor_code\": \"DNR-00043\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T01:55:54+00:00\",\n        \"appointment_at\": \"2026-10-20T08:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"بانتظار الموعد\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 6,\n        \"donor\": {\n          \"name\": \"أسماء طارق الفيفي\",\n          \"donor_code\": \"DNR-00042\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T21:54:54+00:00\",\n        \"appointment_at\": \"2026-10-21T09:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"بانتظار الموعد\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 5,\n        \"donor\": {\n          \"name\": \"مريم فيصل الدوسري\",\n          \"donor_code\": \"DNR-00041\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T09:05:54+00:00\",\n        \"appointment_at\": \"2026-10-21T08:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"بانتظار الموعد\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 4,\n        \"donor\": {\n          \"name\": \"نواف سامي الدوسري\",\n          \"donor_code\": \"DNR-00040\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T20:45:54+00:00\",\n        \"appointment_at\": \"2026-10-19T08:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"بانتظار الموعد\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 3,\n        \"donor\": {\n          \"name\": \"فاطمة نايف السلمي\",\n          \"donor_code\": \"DNR-00039\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T07:00:54+00:00\",\n        \"appointment_at\": \"2026-10-17T10:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"response_status\": {\n          \"value\": \"accepted\",\n          \"label\": \"مقبول\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"appointment_id\": 2,\n        \"donor\": {\n          \"name\": \"هشام محمد المطيري\",\n          \"donor_code\": \"DNR-00038\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T00:03:54+00:00\",\n        \"appointment_at\": \"2026-10-17T08:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"response_status\": {\n          \"value\": \"accepted\",\n          \"label\": \"مقبول\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"appointment_id\": 1,\n        \"donor\": {\n          \"name\": \"محمد عبدالله العمري\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T08:39:54+00:00\",\n        \"appointment_at\": \"2026-10-18T19:34:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"response_status\": {\n          \"value\": \"accepted\",\n          \"label\": \"مقبول\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 12,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 12\n    },\n    \"meta\": {\n      \"empty_text\": null\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/responses",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "responses"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"appointment_id\": 12,\n        \"donor\": {\n          \"name\": \"عبدالملك نواف الصاعدي\",\n          \"donor_code\": \"DNR-00048\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T14:56:54+00:00\",\n        \"appointment_at\": \"2026-10-20T09:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"rejected\",\n          \"label\": \"Rejected\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"Not confirmed\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 11,\n        \"donor\": {\n          \"name\": \"سعد عمر اليامي\",\n          \"donor_code\": \"DNR-00047\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T21:45:54+00:00\",\n        \"appointment_at\": \"2026-10-24T09:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"Not confirmed\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 10,\n        \"donor\": {\n          \"name\": \"لطيفة راشد السعدي\",\n          \"donor_code\": \"DNR-00046\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T04:03:54+00:00\",\n        \"appointment_at\": \"2026-10-24T10:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"Not confirmed\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 9,\n        \"donor\": {\n          \"name\": \"لطيفة تركي العتيبي\",\n          \"donor_code\": \"DNR-00045\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T04:08:54+00:00\",\n        \"appointment_at\": \"2026-10-21T08:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"response_status\": {\n          \"value\": \"not_confirmed\",\n          \"label\": \"Not confirmed\",\n          \"color\": \"#667085\",\n          \"bg_color\": \"#F3F4F6\"\n        }\n      },\n      {\n        \"appointment_id\": 8,\n        \"donor\": {\n          \"name\": \"هند عبدالله المرواني\",\n          \"donor_code\": \"DNR-00044\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T03:29:54+00:00\",\n        \"appointment_at\": \"2026-10-21T08:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"Awaiting appointment\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 7,\n        \"donor\": {\n          \"name\": \"هيا راشد القحطاني\",\n          \"donor_code\": \"DNR-00043\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T01:55:54+00:00\",\n        \"appointment_at\": \"2026-10-20T08:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"Awaiting appointment\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 6,\n        \"donor\": {\n          \"name\": \"أسماء طارق الفيفي\",\n          \"donor_code\": \"DNR-00042\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T21:54:54+00:00\",\n        \"appointment_at\": \"2026-10-21T09:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"Awaiting appointment\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 5,\n        \"donor\": {\n          \"name\": \"مريم فيصل الدوسري\",\n          \"donor_code\": \"DNR-00041\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T09:05:54+00:00\",\n        \"appointment_at\": \"2026-10-21T08:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"Awaiting appointment\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 4,\n        \"donor\": {\n          \"name\": \"نواف سامي الدوسري\",\n          \"donor_code\": \"DNR-00040\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T20:45:54+00:00\",\n        \"appointment_at\": \"2026-10-19T08:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"response_status\": {\n          \"value\": \"awaiting_appointment\",\n          \"label\": \"Awaiting appointment\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        }\n      },\n      {\n        \"appointment_id\": 3,\n        \"donor\": {\n          \"name\": \"فاطمة نايف السلمي\",\n          \"donor_code\": \"DNR-00039\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T07:00:54+00:00\",\n        \"appointment_at\": \"2026-10-17T10:30:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"response_status\": {\n          \"value\": \"accepted\",\n          \"label\": \"Accepted\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"appointment_id\": 2,\n        \"donor\": {\n          \"name\": \"هشام محمد المطيري\",\n          \"donor_code\": \"DNR-00038\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-17T00:03:54+00:00\",\n        \"appointment_at\": \"2026-10-17T08:00:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"response_status\": {\n          \"value\": \"accepted\",\n          \"label\": \"Accepted\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"appointment_id\": 1,\n        \"donor\": {\n          \"name\": \"محمد عبدالله العمري\",\n          \"donor_code\": \"DNR-00020\",\n          \"is_deleted_account\": false\n        },\n        \"responded_at\": \"2026-10-16T08:39:54+00:00\",\n        \"appointment_at\": \"2026-10-18T19:34:00+00:00\",\n        \"booking_status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"response_status\": {\n          \"value\": \"accepted\",\n          \"label\": \"Accepted\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 12,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 12\n    },\n    \"meta\": {\n      \"empty_text\": null\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — no responses yet (empty_text)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/responses",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "responses"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 0,\n      \"last_page\": 1,\n      \"from\": null,\n      \"to\": null\n    },\n    \"meta\": {\n      \"empty_text\": \"لا توجد استجابات — لم يستجب أي متبرع حتى الآن\"\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — نداء خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/responses",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "responses"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/responses",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "responses"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/responses",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "responses"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "update-appeal",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"edited appeal\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"responses\"); pm.expect(o).to.have.property(\"required_units\"); pm.expect(o).to.have.property(\"notes\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"the target moved, the status did not\", () => pm.expect([\"active\", \"paused\"]).to.include(pm.response.json().data.status.value));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appeal_id}}",
                          "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعديل نداء مستشفى.\n\n## Screens\n- G-P14 زر «تعديل» (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- P19 Enter Details (prefilled) — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Path params\n- `id` — required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals · example: `1`\n\n### Body (form-data)\n- `_method` — required · PUT · spoofing · example: `PUT`\n- `file_no` — optional · nullable|string|max:50 · رقم الملف (اختياري) · example: `MRN-1201`\n- `patient_name` — optional · nullable|string|max:150 · اسم المريض (اختياري — C16)\n- `blood_type` — required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types · example: `O-`\n- `urgency` — required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني — C5) · source: GET {{base_url}}lookups/appeal-urgencies · example: `urgent`\n- `required_units` — required · required|integer|min:1|max:100 · عدد الوحدات · example: `15`\n- `donation_type_id` — required · required|exists:donation_types,id + offered by branch · النوع · source: GET {{base_url}}lookups/donation-types?branch_id=1 · example: `1`\n- `district_id` — optional · nullable|exists:districts,id (city of branch) · الحي (النطاق) · source: GET {{base_url}}cities/{id}/districts · example: `3`\n- `required_time_type` — required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times · example: `today`\n- `required_at` — required_if:required_time_type,specific · nullable|required_if:…,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت\n- `medical_message` — optional · nullable|string|max:500 · ملاحظات عن الحالة (≤500) · example: `حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة`\n\n\n## Behaviour notes\n**Steps:**\n1. نداءات `hospital` فقط وفي active/paused؛ نداء المستخدم → 403 (لا يعدّل البنك بيانات مستخدم).\n2. لا يغيّر الفرع؛ تقليل `required_units` تحت `confirmed_count` → 422.\n3. لا يعيد الاستهداف (الإشعار مرة واحدة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.updated` → ar «تم تعديل النداء» / en \"Appeal updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | الوحدات أقل من المؤكد | `appeal.units_below_confirmed` | لا يمكن أن يقل عدد الوحدات عن الاستجابات المؤكدة (:count) | Units cannot be below confirmed responses (:count) |\n| 403 | نداء مستخدم | `appeal.user_appeal_readonly` | لا يمكن تعديل نداءات المستخدمين | User appeals can't be edited |\n| 409 | انتقال غير مسموح من الحالة الحالية | `appeal.invalid_transition` | لا يمكن تنفيذ هذا الإجراء في الحالة الحالية | Not allowed in the current status |\n| 404 | نداء خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n\n> الـ route هو `PUT {{base_url}}provider/appeals/{id}`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "file_no",
                          "value": "MRN-1201",
                          "type": "text",
                          "description": "optional · nullable|string|max:50 · رقم الملف (اختياري)"
                        },
                        {
                          "key": "patient_name",
                          "value": "",
                          "type": "text",
                          "description": "optional · nullable|string|max:150 · اسم المريض (اختياري — C16)"
                        },
                        {
                          "key": "blood_type",
                          "value": "O-",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class) · الفصيلة · source: GET {{base_url}}lookups/blood-types"
                        },
                        {
                          "key": "urgency",
                          "value": "critical",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealUrgency::class) · نوع الحالة (حرج/عاجل/روتيني — C5) · source: GET {{base_url}}lookups/appeal-urgencies"
                        },
                        {
                          "key": "required_units",
                          "value": "20",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:100 · عدد الوحدات"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:donation_types,id + offered by branch · النوع · source: GET {{base_url}}lookups/donation-types?branch_id=1"
                        },
                        {
                          "key": "district_id",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|exists:districts,id (city of branch) · الحي (النطاق) · source: GET {{base_url}}cities/{id}/districts"
                        },
                        {
                          "key": "required_time_type",
                          "value": "today",
                          "type": "text",
                          "description": "required · required|Rule::enum(AppealRequiredTime::class) · الموعد المطلوب · source: GET {{base_url}}lookups/appeal-required-times"
                        },
                        {
                          "key": "required_at",
                          "value": "",
                          "type": "text",
                          "description": "required_if:required_time_type,specific · nullable|required_if:…,specific|date_format:Y-m-d H:i|after:now · تاريخ ووقت"
                        },
                        {
                          "key": "medical_message",
                          "value": "تم رفع العدد المطلوب",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات عن الحالة (≤500)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "20",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تعديل النداء\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 20,\n      \"text\": \"8/20\"\n    },\n    \"urgency\": {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 20,\n    \"required_time\": {\n      \"value\": \"today\",\n      \"label\": \"اليوم\"\n    },\n    \"required_at\": null,\n    \"notes\": \"تم رفع العدد المطلوب\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 20,\n      \"percent\": 40\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "20",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal updated\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"Hospital\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 20,\n      \"text\": \"8/20\"\n    },\n    \"urgency\": {\n      \"value\": \"critical\",\n      \"label\": \"Critical\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"scope\": {\n      \"city\": \"Riyadh\",\n      \"district\": \"Olaya\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"required_units\": 20,\n    \"required_time\": {\n      \"value\": \"today\",\n      \"label\": \"Today\"\n    },\n    \"required_at\": null,\n    \"notes\": \"تم رفع العدد المطلوب\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 20,\n      \"percent\": 40\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"Rejected\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"Accepting responses\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"Pause\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"Resume\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — الوحدات أقل من المؤكد",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن أن يقل عدد الوحدات عن الاستجابات المؤكدة (8)\",\n  \"errors\": {\n    \"required_units\": [\n      \"لا يمكن أن يقل عدد الوحدات عن الاستجابات المؤكدة (8)\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (blood_type, urgency, required_units, donation_type_id, required_time_type)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل فصيلة الدم مطلوب. (and 4 more errors)\",\n  \"errors\": {\n    \"blood_type\": [\n      \"الحقل فصيلة الدم مطلوب.\"\n    ],\n    \"urgency\": [\n      \"الحقل نوع الحالة مطلوب.\"\n    ],\n    \"required_units\": [\n      \"الحقل عدد الوحدات مطلوب.\"\n    ],\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ],\n    \"required_time_type\": [\n      \"الحقل الموعد المطلوب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — نداء مستخدم",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "20",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تعديل نداءات المستخدمين\",\n  \"key\": \"user_appeal_readonly\"\n}"
                    },
                    {
                      "name": "❌ 409 — انتقال غير مسموح من الحالة الحالية",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "20",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء في الحالة الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 404 — نداء خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "20",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "20",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · hospital appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "O-",
                              "type": "text"
                            },
                            {
                              "key": "urgency",
                              "value": "critical",
                              "type": "text"
                            },
                            {
                              "key": "required_units",
                              "value": "20",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "required_time_type",
                              "value": "today",
                              "type": "text"
                            },
                            {
                              "key": "medical_message",
                              "value": "تم رفع العدد المطلوب",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "pause-appeal",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/appeals?status=active&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => o.source.value === \"hospital\"); if (it) { pm.collectionVariables.set(\"provider_appeal_id\", it.id); pm.environment.set(\"provider_appeal_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"paused appeal\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"paused_banner\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"paused with its banner\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"paused\"); pm.expect(d.paused_banner).to.be.a(\"string\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals/{id}/pause",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals",
                        "{id}",
                        "pause"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appeal_id}}",
                          "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعليق النداء.\n\n## Screens\n- P6 Appeal Details / عاجل — provider (web) `224:6547`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&scaling=scale-down&content-scaling=fixed)\n- P13 Details 002 (نشط) — provider (web) `224:12946`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12946&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-12946&scaling=scale-down&content-scaling=fixed)\n- P16 Details 005 — provider (web) `224:14364`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14364&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-14364&scaling=scale-down&content-scaling=fixed)\n- G-P14 أزرار النداء (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppealStatusService::transition($appeal, PAUSED, actor: employee)` — خريطة TRANSITIONS + سجل `appeal_status_logs`.\n2. مسموح على نداءات المستشفى **ونداءات المستخدمين** على الفرع.\n3. تُمنع الاستجابات الجديدة؛ الحجوزات القائمة سارية.\n\n**Status / state transitions:** `active` → `paused`\n\n**Side effects (Laravel-first):**\n- `AppealStatusChanged` event → queued notifications.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appeal_paused` | صاحب النداء (نداء مستخدم) | تم تعليق نداءك | تم تعليق النداء :code | appeal_id | U145 |\n\n> Postman: the pre-request picks an ACTIVE hospital appeal.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.paused` → ar «تم تعليق النداء» / en \"Appeal paused\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | انتقال غير مسموح من الحالة الحالية | `appeal.invalid_transition` | لا يمكن تنفيذ هذا الإجراء في الحالة الحالية | Not allowed in the current status |\n| 404 | نداء خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/pause",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "pause"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تعليق النداء\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"paused\",\n      \"label\": \"معلق\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"text\": \"8/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"percent\": 53\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"لا يستقبل استجابات\"\n    },\n    \"paused_banner\": \"النداء معلّق — لا يستقبل استجابات جديدة حالياً، والحجوزات القائمة سارية\",\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/pause",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "pause"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal paused\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"paused\",\n      \"label\": \"Paused\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"Hospital\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"text\": \"8/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"Riyadh\",\n      \"district\": \"Olaya\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"percent\": 53\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"Rejected\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"Not accepting responses\"\n    },\n    \"paused_banner\": \"Appeal paused — it does not accept new responses now, existing bookings stay valid\",\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"Pause\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"Resume\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a donor appeal (the owner is told)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/pause",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "pause"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تعليق النداء\",\n  \"data\": {\n    \"id\": 19,\n    \"code\": \"APL-2610-009\",\n    \"created_at\": \"2026-10-16\",\n    \"status\": {\n      \"value\": \"paused\",\n      \"label\": \"معلق\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"source\": {\n      \"value\": \"user\",\n      \"label\": \"مستخدم\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"responses\": {\n      \"confirmed\": 1,\n      \"target\": 3,\n      \"text\": \"1/3\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 3,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"notes\": \"نحتاج متبرعين لحالة خالد في أقرب وقت ممكن\",\n    \"file_no\": null,\n    \"patient_name\": \"خالد\",\n    \"requester\": {\n      \"relation\": {\n        \"value\": \"father\",\n        \"label\": \"الأب\"\n      },\n      \"name\": \"عبدالله الشهري\",\n      \"phone\": \"560000002\"\n    },\n    \"case_description\": \"حالة تحتاج نقل دم\",\n    \"diagnosis\": \"فقر دم حاد\",\n    \"published_at\": \"2026-10-16T21:26:59+00:00\",\n    \"expires_at\": \"2026-10-23T21:26:59+00:00\",\n    \"targeted_count\": 12,\n    \"response_rate\": {\n      \"confirmed\": 1,\n      \"target\": 3,\n      \"percent\": 33\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 1\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"لا يستقبل استجابات\"\n    },\n    \"paused_banner\": \"النداء معلّق — لا يستقبل استجابات جديدة حالياً، والحجوزات القائمة سارية\",\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/19/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/19/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/19/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/19\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — انتقال غير مسموح من الحالة الحالية",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/pause",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "pause"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء في الحالة الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 404 — نداء خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/pause",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "pause"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/pause",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "pause"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/pause",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "pause"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "resume-appeal",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/appeals?status=paused&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => o.source.value === \"hospital\"); if (it) { pm.collectionVariables.set(\"provider_appeal_id\", it.id); pm.environment.set(\"provider_appeal_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"resumed appeal\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"paused_banner\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"active again, banner gone\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"active\"); pm.expect(d.paused_banner).to.eql(null); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals/{id}/resume",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals",
                        "{id}",
                        "resume"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appeal_id}}",
                          "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nاستئناف النداء.\n\n## Screens\n- P15 Details 004 — معلق — provider (web) `224:13888`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13888&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13888&scaling=scale-down&content-scaling=fixed)\n- G-P14 أزرار النداء (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals · example: `4`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppealStatusService::transition($appeal, ACTIVE, actor: employee)` — خريطة TRANSITIONS + سجل `appeal_status_logs`.\n2. نداءات المستشفى فقط (نداء المستخدم يستأنفه الأدمن) → 403 لغيرها.\n\n**Status / state transitions:** `paused` → `active`\n\n**Side effects (Laravel-first):**\n- `AppealStatusChanged` event → queued notifications.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appeal_resumed` | صاحب النداء | تم استئناف نداءك | تم استئناف النداء :code | appeal_id | U145 |\n\n> Postman: the pre-request picks a PAUSED hospital appeal (a user-source appeal can only be resumed by the admin).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.resumed` → ar «تم استئناف النداء» / en \"Appeal resumed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | انتقال غير مسموح من الحالة الحالية | `appeal.invalid_transition` | لا يمكن تنفيذ هذا الإجراء في الحالة الحالية | Not allowed in the current status |\n| 403 | نداء مستخدم | `appeal.user_appeal_resume_admin_only` | استئناف نداءات المستخدمين من الإدارة فقط | Only admins can resume user appeals |\n| 404 | نداء خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/resume",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "resume"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم استئناف النداء\",\n  \"data\": {\n    \"id\": 4,\n    \"code\": \"APL-2608-004\",\n    \"created_at\": \"2026-10-12\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 5,\n      \"target\": 8,\n      \"text\": \"5/8\"\n    },\n    \"urgency\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"scope\": {\n      \"city\": \"مكة المكرمة\",\n      \"district\": \"العزيزية\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"branch\": {\n      \"id\": 4,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\"\n    },\n    \"required_units\": 8,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"notes\": \"مخزون منخفض — تجديد روتيني\",\n    \"file_no\": null,\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-12T17:35:56+00:00\",\n    \"expires_at\": \"2026-10-19T17:35:56+00:00\",\n    \"targeted_count\": 1,\n    \"response_rate\": {\n      \"confirmed\": 5,\n      \"target\": 8,\n      \"percent\": 63\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 4\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 1\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/4/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/4/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/4/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/4\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/resume",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "resume"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal resumed\",\n  \"data\": {\n    \"id\": 4,\n    \"code\": \"APL-2608-004\",\n    \"created_at\": \"2026-10-12\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"Hospital\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 5,\n      \"target\": 8,\n      \"text\": \"5/8\"\n    },\n    \"urgency\": {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"scope\": {\n      \"city\": \"Mecca\",\n      \"district\": \"Al Aziziyah\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"blood_type\": {\n      \"value\": \"A-\",\n      \"label\": \"A-\"\n    },\n    \"branch\": {\n      \"id\": 4,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Makkah Branch\"\n    },\n    \"required_units\": 8,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"notes\": \"مخزون منخفض — تجديد روتيني\",\n    \"file_no\": null,\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-12T17:35:56+00:00\",\n    \"expires_at\": \"2026-10-19T17:35:56+00:00\",\n    \"targeted_count\": 1,\n    \"response_rate\": {\n      \"confirmed\": 5,\n      \"target\": 8,\n      \"percent\": 63\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 4\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 1\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"open\",\n      \"label\": \"Accepting responses\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"Pause\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/4/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"Resume\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/4/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/4/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/4\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — انتقال غير مسموح من الحالة الحالية",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/resume",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "resume"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء في الحالة الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 403 — نداء مستخدم",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/resume",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "resume"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"استئناف نداءات المستخدمين من الإدارة فقط\",\n  \"key\": \"user_appeal_resume_admin_only\"\n}"
                    },
                    {
                      "name": "❌ 404 — نداء خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/resume",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "resume"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/resume",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "resume"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/resume",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "resume"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "close-appeal",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/appeals?status=active&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => true); if (it) { pm.collectionVariables.set(\"provider_appeal_id\", it.id); pm.environment.set(\"provider_appeal_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"closed appeal\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"closed_reason\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"closed with a reason; bookings are not cancelled\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"closed\"); pm.expect(d.closed_reason).to.be.a(\"string\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/appeals/{id}/close",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "appeals",
                        "{id}",
                        "close"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_appeal_id}}",
                          "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                        }
                      ]
                    },
                    "description": "## Purpose\nإغلاق النداء.\n\n## Screens\n- P6 Appeal Details / عاجل — provider (web) `224:6547`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-6547&scaling=scale-down&content-scaling=fixed)\n- P14 Details 003 (تم الاستيفاء) — provider (web) `224:13422`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13422&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13422&scaling=scale-down&content-scaling=fixed)\n- P15 Details 004 — معلق — provider (web) `224:13888`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13888&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-13888&scaling=scale-down&content-scaling=fixed)\n- P18 Details 2407-012 — مغلق — provider (web) `224:15217`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-15217&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-15217&scaling=scale-down&content-scaling=fixed)\n- G-P14 أزرار النداء (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:appeals`\n\n## Parameters & fields\n### Path params\n- `id` — required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals · example: `1`\n\n### Body (form-data)\n- `reason` — optional · nullable|string|max:500 · سبب الإغلاق · example: `انتهاء الحاجة`\n\n\n## Behaviour notes\n**Steps:**\n1. `AppealStatusService::transition($appeal, CLOSED, actor: employee, reason)` — خريطة TRANSITIONS + سجل `appeal_status_logs`.\n2. سبب اختياري → `status_reason` («تم الإغلاق — انتهاء الحاجة»).\n3. الحجوزات المرتبطة القائمة **لا** تُلغى.\n\n**Status / state transitions:** `active|paused|fulfilled` → `closed`\n\n**Side effects (Laravel-first):**\n- `AppealStatusChanged` event → queued notifications.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appeal_closed` | صاحب النداء (مستخدم) | تم إغلاق نداءك | أُغلق النداء :code (:reason) | appeal_id | W3 |\n| `provider_appeal_closed` | موظفو appeals الآخرون | إغلاق نداء | تم إغلاق النداء :code — :reason | appeal_id | P6 |\n\n> Postman: the pre-request picks an ACTIVE appeal.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/appeal.closed` → ar «تم إغلاق النداء» / en \"Appeal closed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | انتقال غير مسموح من الحالة الحالية | `appeal.invalid_transition` | لا يمكن تنفيذ هذا الإجراء في الحالة الحالية | Not allowed in the current status |\n| 404 | نداء خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `appeals` (`employee.section:appeals`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"appeals\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "reason",
                          "value": "انتهاء الحاجة",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · سبب الإغلاق"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "انتهاء الحاجة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إغلاق النداء\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"closed\",\n      \"label\": \"مغلق\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"text\": \"8/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"الرياض\",\n      \"district\": \"العليا\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"percent\": 53\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"قيد الانتظار\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"مؤكد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"لا يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": \"انتهاء الحاجة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "Need ended",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appeal closed\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"APL-2608-001\",\n    \"created_at\": \"2026-10-15\",\n    \"status\": {\n      \"value\": \"closed\",\n      \"label\": \"Closed\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"Hospital\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"text\": \"8/15\"\n    },\n    \"urgency\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"scope\": {\n      \"city\": \"Riyadh\",\n      \"district\": \"Olaya\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"blood_type\": {\n      \"value\": \"O-\",\n      \"label\": \"O-\"\n    },\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"required_units\": 15,\n    \"required_time\": {\n      \"value\": \"asap\",\n      \"label\": \"As soon as possible\"\n    },\n    \"required_at\": null,\n    \"notes\": \"حالة جراحية طارئة — مطلوب فوري خلال 24 ساعة\",\n    \"file_no\": \"MRN-448201\",\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-10-15T18:59:54+00:00\",\n    \"expires_at\": \"2026-10-22T18:59:54+00:00\",\n    \"targeted_count\": 7,\n    \"response_rate\": {\n      \"confirmed\": 8,\n      \"target\": 15,\n      \"percent\": 53\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"pending\",\n          \"label\": \"Pending\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"count\": 2\n      },\n      {\n        \"status\": {\n          \"value\": \"confirmed\",\n          \"label\": \"Confirmed\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"count\": 5\n      },\n      {\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"Rejected\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"Attended\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 3\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"Not accepting responses\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": \"Need ended\",\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"Pause\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"Resume\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"Close\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/1/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/1\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — a fulfilled appeal, no reason",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إغلاق النداء\",\n  \"data\": {\n    \"id\": 3,\n    \"code\": \"APL-2608-003\",\n    \"created_at\": \"2026-09-22\",\n    \"status\": {\n      \"value\": \"closed\",\n      \"label\": \"مغلق\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"source\": {\n      \"value\": \"hospital\",\n      \"label\": \"مستشفى\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    },\n    \"responses\": {\n      \"confirmed\": 12,\n      \"target\": 12,\n      \"text\": \"12/12\"\n    },\n    \"urgency\": {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"scope\": {\n      \"city\": \"الدمام\",\n      \"district\": \"الشاطئ\"\n    },\n    \"donation_type\": {\n      \"id\": 3,\n      \"name\": \"بلازما\"\n    },\n    \"blood_type\": {\n      \"value\": \"B+\",\n      \"label\": \"B+\"\n    },\n    \"branch\": {\n      \"id\": 3,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\"\n    },\n    \"required_units\": 12,\n    \"required_time\": {\n      \"value\": \"specific\",\n      \"label\": \"تحديد تاريخ ووقت\"\n    },\n    \"required_at\": \"2026-09-24T10:00:00+00:00\",\n    \"notes\": \"تجديد مخزون البلازما للعمليات المجدولة\",\n    \"file_no\": null,\n    \"patient_name\": null,\n    \"requester\": null,\n    \"published_at\": \"2026-09-22T16:25:55+00:00\",\n    \"expires_at\": \"2026-09-29T16:25:55+00:00\",\n    \"targeted_count\": 3,\n    \"response_rate\": {\n      \"confirmed\": 12,\n      \"target\": 12,\n      \"percent\": 100\n    },\n    \"responses_by_status\": [\n      {\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"count\": 1\n      },\n      {\n        \"status\": {\n          \"value\": \"attended\",\n          \"label\": \"حضر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"count\": 12\n      }\n    ],\n    \"response_state\": {\n      \"value\": \"closed\",\n      \"label\": \"لا يستقبل استجابات\"\n    },\n    \"paused_banner\": null,\n    \"closed_reason\": \"تم الإغلاق — انتهاء الحاجة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"pause\",\n        \"label\": \"تعليق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/3/pause\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"resume\",\n        \"label\": \"استئناف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/3/resume\",\n        \"style\": \"success\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"close\",\n        \"label\": \"إغلاق\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/appeals/3/close\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/appeals/3\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "ااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااا",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يجب ان يكون طول حقل السبب اكبر من 500 حروفٍ/حرفًا.\",\n  \"errors\": {\n    \"reason\": [\n      \"لا يجب ان يكون طول حقل السبب اكبر من 500 حروفٍ/حرفًا.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — انتقال غير مسموح من الحالة الحالية",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن تنفيذ هذا الإجراء في الحالة الحالية\",\n  \"key\": \"invalid_transition\"\n}"
                    },
                    {
                      "name": "❌ 404 — نداء خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم appeals (employee.section:appeals) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"appeals\"}}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/appeals/{id}/close",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "appeals",
                            "{id}",
                            "close"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_appeal_id}}",
                              "description": "required · appeal in scope · النداء · source: GET {{base_url}}provider/appeals"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"appeals\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `appeals` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities/{id}/districts",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities/{id}/districts",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": [
                            "{id}",
                            "districts"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `district_id` (الحي — يتبع مدينة الفرع) — أحياء مدينة — مصدر `district_id` في النداء (web) والفرع.\n\n## Screens\n- U137 Create Appeal — الحي (web) — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — district — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع أحياء المدينة النشطة (base `districts` + translations) مرتبة بالاسم.\n2. المدينة غير موجودة → 404.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | مدينة غير موجودة | `messages.not_found` | العنصر غير موجود | Not found |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — districts of Riyadh",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities/{id}/districts",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": [
                                "{id}",
                                "districts"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 3,\n      \"name\": \"الحي الدبلوماسي\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"الروضة\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"السليمانية\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"العكيشية\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"العليا\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"المربع\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"المروج\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"المروج II\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الملاذ\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الورود\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 404 — unknown city",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities/{id}/districts",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": [
                                "{id}",
                                "districts"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/appeal-urgencies",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); pm.expect(o).to.have.property(\"hint\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-urgencies",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-urgencies"
                          ]
                        },
                        "description": "## Purpose\nمصدر `urgency` (الاستعجال: حرج / عاجل / روتيني) — قائمة درجات استعجال النداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P19 Create Appeal / Enter Details — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n- P10 Appeals filter — urgency — provider (web) `245:6635`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6635&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealUrgency` بالترتيب المعرّف في الـ enum عبر `AppealUrgency::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- ثلاث قيم فقط (C5): حرج/عاجل/روتيني — أي «عالي/متوسط/منخفض» في التصميم تُستبدل.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/appeal-urgencies",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "appeal-urgencies"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\",\n      \"hint\": \"إنقاذ حياة\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\",\n      \"hint\": \"خلال ساعات\"\n    },\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\",\n      \"hint\": \"حاجة مستقرة\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/appeal-required-times",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-required-times",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-required-times"
                          ]
                        },
                        "description": "## Purpose\nمصدر `required_time_type` (الموعد المطلوب: اليوم / في أقرب وقت / تحديد تاريخ ووقت) — قائمة الموعد المطلوب للنداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U137 Create Appeal / Patient Details — user app `2051:7071`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7071&scaling=scale-down&content-scaling=fixed)\n- U137 Create Appeal / Patient Details — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P19 Create Appeal / Enter Details — provider (web) `224:4816`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-4816&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealRequiredTime` بالترتيب المعرّف في الـ enum عبر `AppealRequiredTime::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `specific` يجعل `required_at` إجبارياً في فورم النداء.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/appeal-required-times",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "appeal-required-times"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"today\",\n      \"label\": \"اليوم\"\n    },\n    {\n      \"value\": \"asap\",\n      \"label\": \"في أقرب وقت\"\n    },\n    {\n      \"value\": \"specific\",\n      \"label\": \"تحديد تاريخ ووقت\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/appeal-statuses",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/appeal-statuses",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "appeal-statuses"
                          ]
                        },
                        "description": "## Purpose\nمصدر فلتر `status` (حالة النداء) — قائمة حالات النداء — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- P8 Appeals — status dropdown — provider (web) `245:5554`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-5554&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-5554&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\AppealStatus` بالترتيب المعرّف في الـ enum عبر `AppealStatus::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- ملوّن: `{value,label,color,bg_color}` من `AppealStatus::color()/bg()` (analysis §4.2.1).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/appeal-statuses",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "appeal-statuses"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"under_review\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"rejected\",\n      \"label\": \"مرفوض\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    {\n      \"value\": \"paused\",\n      \"label\": \"معلق\",\n      \"color\": \"#B45309\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"fulfilled\",\n      \"label\": \"تم الاستيفاء\",\n      \"color\": \"#4B5563\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    {\n      \"value\": \"closed\",\n      \"label\": \"مغلق\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/appeals",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appeals",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ النداءات على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: appeals (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appeals\": 6\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "support",
              "description": "Flow `support` — 12 endpoints (sprint 7). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "support-overview",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"counters + recent activity\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"tickets_count\"); pm.expect(o).to.have.property(\"offers_count\"); pm.expect(o).to.have.property(\"recent_activity\"); });",
                          "pm.test(\"recent rows (kind, title, type label, date, colored status, link)\", () => { const l = pm.response.json().data.recent_activity; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"kind\"); pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"type_label\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"link\"); } });",
                          "pm.test(\"at most five rows, tickets and offers mixed\", () => { const r = pm.response.json().data.recent_activity; pm.expect(r.length).to.be.at.most(5); r.forEach((x) => pm.expect([\"ticket\", \"offer\"]).to.include(x.kind)); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/support/overview",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "support",
                        "overview"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nملخص صفحة التواصل مع الإدارة.\n\n## Screens\n- P52 Contact Administration — provider (web) `779:4920`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-4920&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-4920&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. بطاقة «شكاوى ومقترحات» (عدد الطلبات السابقة)، بطاقة «عرض أكياس دم للبيع» (عدد العروض)، `recent_activity[]` (آخر 5 من التذاكر والعروض مدموجة: العنوان، النوع · التاريخ، الحالة، `link`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/support/overview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "support",
                            "overview"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"tickets_count\": 2,\n    \"offers_count\": 7,\n    \"recent_activity\": [\n      {\n        \"kind\": \"ticket\",\n        \"id\": 3,\n        \"title\": \"خطأ في عرض عدد المتبرعين\",\n        \"type_label\": \"شكوى\",\n        \"date\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"new\",\n          \"label\": \"جديد\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"link\": \"provider/tickets/3\"\n      },\n      {\n        \"kind\": \"offer\",\n        \"id\": 3,\n        \"title\": \"عرض بلازما O+ (8 كيس)\",\n        \"type_label\": \"عرض أكياس\",\n        \"date\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"تم قبول العرض مبدئياً\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"link\": \"provider/offers/3\"\n      },\n      {\n        \"kind\": \"offer\",\n        \"id\": 7,\n        \"title\": \"عرض كريات حمراء O- (4 كيس)\",\n        \"type_label\": \"عرض أكياس\",\n        \"date\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"link\": \"provider/offers/7\"\n      },\n      {\n        \"kind\": \"ticket\",\n        \"id\": 1,\n        \"title\": \"تأخر الرد على نداء طارئ\",\n        \"type_label\": \"شكوى\",\n        \"date\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"تم الرد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"link\": \"provider/tickets/1\"\n      },\n      {\n        \"kind\": \"offer\",\n        \"id\": 4,\n        \"title\": \"عرض دم كامل B+ (12 كيس)\",\n        \"type_label\": \"عرض أكياس\",\n        \"date\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"transporting\",\n          \"label\": \"جاري نقل الأكياس\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"link\": \"provider/offers/4\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/support/overview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "support",
                            "overview"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"tickets_count\": 2,\n    \"offers_count\": 7,\n    \"recent_activity\": [\n      {\n        \"kind\": \"ticket\",\n        \"id\": 3,\n        \"title\": \"خطأ في عرض عدد المتبرعين\",\n        \"type_label\": \"Complaint\",\n        \"date\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"new\",\n          \"label\": \"New\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"link\": \"provider/tickets/3\"\n      },\n      {\n        \"kind\": \"offer\",\n        \"id\": 3,\n        \"title\": \"Offer Plasma O+ (8 bags)\",\n        \"type_label\": \"Blood offer\",\n        \"date\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"Initially accepted\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"link\": \"provider/offers/3\"\n      },\n      {\n        \"kind\": \"offer\",\n        \"id\": 7,\n        \"title\": \"Offer Red Cells O- (4 bags)\",\n        \"type_label\": \"Blood offer\",\n        \"date\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"link\": \"provider/offers/7\"\n      },\n      {\n        \"kind\": \"ticket\",\n        \"id\": 1,\n        \"title\": \"تأخر الرد على نداء طارئ\",\n        \"type_label\": \"Complaint\",\n        \"date\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"Replied\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"link\": \"provider/tickets/1\"\n      },\n      {\n        \"kind\": \"offer\",\n        \"id\": 4,\n        \"title\": \"Offer Whole Blood B+ (12 bags)\",\n        \"type_label\": \"Blood offer\",\n        \"date\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"transporting\",\n          \"label\": \"Transporting\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"link\": \"provider/offers/4\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (branch_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/support/overview?branch_id=99999",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "support",
                            "overview"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/support/overview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "support",
                            "overview"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/support/overview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "support",
                            "overview"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/support/overview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "support",
                            "overview"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "tickets",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"lean ticket cards (type, title, colored status, last reply, branch)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"last_reply_at\"); pm.expect(o).to.have.property(\"branch\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"a list card carries no details or files\", () => { const l = pm.response.json().data.data; if (l.length) { pm.expect(l[0]).to.not.have.property(\"details\"); pm.expect(l[0]).to.not.have.property(\"attachments\"); } });",
                          "{ const l = pm.response.json().data.data; if (l.length) { pm.collectionVariables.set(\"provider_ticket_id\", l[0].id); pm.environment.set(\"provider_ticket_id\", l[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/tickets",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "tickets"
                      ],
                      "query": [
                        {
                          "key": "status",
                          "value": "replied",
                          "description": "optional · nullable|Rule::enum(TicketStatus::class) · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "type",
                          "value": "complaint",
                          "description": "optional · nullable|Rule::enum(TicketType::class) · النوع · source: GET {{base_url}}provider/lookups/ticket-types",
                          "disabled": true
                        },
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة طلبات الدعم.\n\n## Screens\n- P54 Support Requests (طلباتي) — provider (web) `779:5516`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5516&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5516&scaling=scale-down&content-scaling=fixed)\n- P67 Support Requests v02 — provider (web) `779:9344`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9344&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9344&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Query params\n- `status` — optional · nullable|Rule::enum(TicketStatus::class) · الحالة · example: `replied`\n- `type` — optional · nullable|Rule::enum(TicketType::class) · النوع · source: GET {{base_url}}provider/lookups/ticket-types · example: `complaint`\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. تذاكر النطاق الأحدث أولاً؛ فلاتر `status`, `type`, `branch_id`.\n2. بطاقة القائمة (`TicketListResource`) **بلا `action_buttons`** رغم أن للتذكرة حالة: أزرار التذكرة (رد، إغلاق...) تظهر في شاشة التفاصيل فقط (`provider/tickets/{id}` → `TicketResource.action_buttons`) — لا تبنِ أزراراً على بطاقات القائمة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (status, type) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|Rule::enum(TicketStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "complaint",
                              "description": "optional · nullable|Rule::enum(TicketType::class) · النوع · source: GET {{base_url}}provider/lookups/ticket-types",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 3,\n        \"code\": \"TKT-2608-003\",\n        \"type\": {\n          \"value\": \"complaint\",\n          \"label\": \"شكوى\"\n        },\n        \"title\": \"خطأ في عرض عدد المتبرعين\",\n        \"created_at\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"new\",\n          \"label\": \"جديد\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"last_reply_at\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      },\n      {\n        \"id\": 1,\n        \"code\": \"TKT-2608-001\",\n        \"type\": {\n          \"value\": \"complaint\",\n          \"label\": \"شكوى\"\n        },\n        \"title\": \"تأخر الرد على نداء طارئ\",\n        \"created_at\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"تم الرد\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"last_reply_at\": \"2026-10-14T12:30:28+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 2,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 2\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|Rule::enum(TicketStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "complaint",
                              "description": "optional · nullable|Rule::enum(TicketType::class) · النوع · source: GET {{base_url}}provider/lookups/ticket-types",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 3,\n        \"code\": \"TKT-2608-003\",\n        \"type\": {\n          \"value\": \"complaint\",\n          \"label\": \"Complaint\"\n        },\n        \"title\": \"خطأ في عرض عدد المتبرعين\",\n        \"created_at\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"new\",\n          \"label\": \"New\",\n          \"color\": \"#3B82F6\",\n          \"bg_color\": \"#EEF4FF\"\n        },\n        \"last_reply_at\": null,\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      },\n      {\n        \"id\": 1,\n        \"code\": \"TKT-2608-001\",\n        \"type\": {\n          \"value\": \"complaint\",\n          \"label\": \"Complaint\"\n        },\n        \"title\": \"تأخر الرد على نداء طارئ\",\n        \"created_at\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"replied\",\n          \"label\": \"Replied\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"last_reply_at\": \"2026-10-14T12:30:28+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        }\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 2,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 2\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status, type)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets?status=bogus&type=bogus",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|Rule::enum(TicketStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "complaint",
                              "description": "optional · nullable|Rule::enum(TicketType::class) · النوع · source: GET {{base_url}}provider/lookups/ticket-types",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الحالة غير صالح. (and 1 more error)\",\n  \"errors\": {\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ],\n    \"type\": [\n      \"حقل المحدد النوع غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|Rule::enum(TicketStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "complaint",
                              "description": "optional · nullable|Rule::enum(TicketType::class) · النوع · source: GET {{base_url}}provider/lookups/ticket-types",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "replied",
                              "description": "optional · nullable|Rule::enum(TicketStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "type",
                              "value": "complaint",
                              "description": "optional · nullable|Rule::enum(TicketType::class) · النوع · source: GET {{base_url}}provider/lookups/ticket-types",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "create-ticket",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"opened ticket\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"details\"); pm.expect(o).to.have.property(\"attachments\"); pm.expect(o).to.have.property(\"reply_eta_text\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"starts new with a TKT- code and the 24-48h promise\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"new\"); pm.expect(d.code).to.match(/^TKT-[0-9]{4}-[0-9]+$/); pm.expect(d.last_reply_at).to.eql(null); pm.expect(d.reply_eta_text).to.be.a(\"string\"); pm.expect(d.action_buttons[0].key).to.eql(\"send_message\"); });",
                          "{ const id = pm.response.json().data.id; if (id) { pm.collectionVariables.set(\"provider_ticket_id\", id); pm.environment.set(\"provider_ticket_id\", id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/tickets",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "tickets"
                      ]
                    },
                    "description": "## Purpose\nفتح تذكرة دعم مع الإدارة.\n\n## Screens\n- P53 Submit Complaint or Suggestion — provider (web) `779:5227`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5227&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5227&scaling=scale-down&content-scaling=fixed)\n- P55 Ticket Submitted — provider (web) `779:5797`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5797&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5797&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Body (form-data)\n- `type` — required · required|Rule::enum(TicketType::class) · نوع الطلب · source: GET {{base_url}}provider/lookups/ticket-types · example: `complaint`\n- `title` — required · required|string|max:150 · العنوان · example: `تأخر الرد على نداء طارئ`\n- `details` — required · required|string|max:2000 · التفاصيل · example: `نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين`\n- `attachments[]` — optional · nullable|array|max:5; .* file|mimes:jpg,jpeg,png,pdf|max:5120 · المرفقات · example: `(files)`\n- `branch_id` — optional · nullable (owner: optional — null = org level)|exists in scope · الفرع · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. ينشئ `support_tickets` (`status=new`, code TKT-, `organization_id`, `branch_id` — owner بلا فرع = مستوى الجهة)، المرفقات عبر `FILES`.\n2. «كيف يعمل النظام؟» نص ثابت في الواجهة.\n\n**Status / state transitions:** `TicketStatus`: — → `new`.\n\n**Side effects (Laravel-first):**\n- none.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_ticket_created` | الأدمن | طلب دعم جديد | :code — :title | ticket_id | admin tickets.show |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/ticket.created` → ar «تم إرسال طلبك إلى الإدارة — ستتلقى الرد خلال 24–48 ساعة عبر المحادثة» / en \"Request sent — reply within 24–48h in the chat\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (type, title, details, attachments) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "type",
                          "value": "complaint",
                          "type": "text",
                          "description": "required · required|Rule::enum(TicketType::class) · نوع الطلب · source: GET {{base_url}}provider/lookups/ticket-types"
                        },
                        {
                          "key": "title",
                          "value": "تأخر الرد على نداء طارئ",
                          "type": "text",
                          "description": "required · required|string|max:150 · العنوان"
                        },
                        {
                          "key": "details",
                          "value": "نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين",
                          "type": "text",
                          "description": "required · required|string|max:2000 · التفاصيل"
                        },
                        {
                          "key": "attachments[]",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|array|max:5; .* file|mimes:jpg,jpeg,png,pdf|max:5120 · المرفقات"
                        },
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable (owner: optional — null = org level)|exists in scope · الفرع"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "type",
                              "value": "complaint",
                              "type": "text"
                            },
                            {
                              "key": "title",
                              "value": "تأخر الرد على نداء طارئ",
                              "type": "text"
                            },
                            {
                              "key": "details",
                              "value": "نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال طلبك إلى الإدارة — ستتلقى الرد خلال 24–48 ساعة عبر المحادثة\",\n  \"data\": {\n    \"id\": 8,\n    \"code\": \"TKT-2610-001\",\n    \"type\": {\n      \"value\": \"complaint\",\n      \"label\": \"شكوى\"\n    },\n    \"title\": \"تأخر الرد على نداء طارئ\",\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"new\",\n      \"label\": \"جديد\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"last_reply_at\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"details\": \"نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين\",\n    \"attachments\": [],\n    \"reply_eta_text\": \"ستتلقى الرد خلال 24–48 ساعة عبر المحادثة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"send_message\",\n        \"label\": \"إرسال\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/tickets/8/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "type",
                              "value": "complaint",
                              "type": "text"
                            },
                            {
                              "key": "title",
                              "value": "تأخر الرد على نداء طارئ",
                              "type": "text"
                            },
                            {
                              "key": "details",
                              "value": "نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Request sent — reply within 24–48h in the chat\",\n  \"data\": {\n    \"id\": 9,\n    \"code\": \"TKT-2610-001\",\n    \"type\": {\n      \"value\": \"complaint\",\n      \"label\": \"Complaint\"\n    },\n    \"title\": \"تأخر الرد على نداء طارئ\",\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"new\",\n      \"label\": \"New\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"last_reply_at\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"details\": \"نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين\",\n    \"attachments\": [],\n    \"reply_eta_text\": \"Reply within 24–48h in the chat\",\n    \"action_buttons\": [\n      {\n        \"key\": \"send_message\",\n        \"label\": \"Send\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/tickets/9/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success with an attachment (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "type",
                              "value": "complaint",
                              "type": "text"
                            },
                            {
                              "key": "title",
                              "value": "تأخر الرد على نداء طارئ",
                              "type": "text"
                            },
                            {
                              "key": "details",
                              "value": "نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين",
                              "type": "text"
                            },
                            {
                              "key": "attachments[]",
                              "value": "(screenshot.png)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال طلبك إلى الإدارة — ستتلقى الرد خلال 24–48 ساعة عبر المحادثة\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"TKT-2610-001\",\n    \"type\": {\n      \"value\": \"complaint\",\n      \"label\": \"شكوى\"\n    },\n    \"title\": \"تأخر الرد على نداء طارئ\",\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"new\",\n      \"label\": \"جديد\",\n      \"color\": \"#3B82F6\",\n      \"bg_color\": \"#EEF4FF\"\n    },\n    \"last_reply_at\": null,\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"details\": \"نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين\",\n    \"attachments\": [\n      {\n        \"id\": 119,\n        \"name\": \"screenshot.png\",\n        \"url\": \"http://localhost/storage/support_tickets/screenshot.png\",\n        \"mime\": \"image/png\",\n        \"size_kb\": 1\n      }\n    ],\n    \"reply_eta_text\": \"ستتلقى الرد خلال 24–48 ساعة عبر المحادثة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"send_message\",\n        \"label\": \"إرسال\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/tickets/10/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (type, title, details, attachments)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل النوع مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"type\": [\n      \"الحقل النوع مطلوب.\"\n    ],\n    \"title\": [\n      \"الحقل العنوان مطلوب.\"\n    ],\n    \"details\": [\n      \"الحقل details مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "type",
                              "value": "complaint",
                              "type": "text"
                            },
                            {
                              "key": "title",
                              "value": "تأخر الرد على نداء طارئ",
                              "type": "text"
                            },
                            {
                              "key": "details",
                              "value": "نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "type",
                              "value": "complaint",
                              "type": "text"
                            },
                            {
                              "key": "title",
                              "value": "تأخر الرد على نداء طارئ",
                              "type": "text"
                            },
                            {
                              "key": "details",
                              "value": "نداء APL-2608-001 لم يُنشر في التطبيق إلا بعد ساعتين",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "ticket-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"ticket details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"details\"); pm.expect(o).to.have.property(\"attachments\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"the send button is off once closed\", () => { const d = pm.response.json().data; pm.expect(d.action_buttons.map((b) => b.key)).to.eql([\"send_message\"]); pm.expect(d.action_buttons[0].is_available).to.eql(d.status.value !== \"closed\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/tickets/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "tickets",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_ticket_id}}",
                          "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل تذكرة.\n\n## Screens\n- P56 Ticket Details / New — provider (web) `779:6005`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6005&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6005&scaling=scale-down&content-scaling=fixed)\n- P57 Ticket Details / Replied — provider (web) `779:6281`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6281&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6281&scaling=scale-down&content-scaling=fixed)\n- P58 Ticket Details / Under Review — provider (web) `779:6584`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6584&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6584&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Path params\n- `id` — required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. الرأس (الرقم، الحالة) + تفاصيل الطلب (الرقم، النوع، التاريخ، آخر رد، المرفقات) + `action_buttons` [`send_message` — معطّل عند closed].\n2. الرسائل منفصلة (`/messages`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | طلب خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"TKT-2608-001\",\n    \"type\": {\n      \"value\": \"complaint\",\n      \"label\": \"شكوى\"\n    },\n    \"title\": \"تأخر الرد على نداء طارئ\",\n    \"created_at\": \"2026-10-12\",\n    \"status\": {\n      \"value\": \"replied\",\n      \"label\": \"تم الرد\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"last_reply_at\": \"2026-10-14T12:30:28+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"details\": \"تأخرت الإدارة في الرد على نداء طارئ نشرناه صباح الأمس وفاتت فرصة استجابة عدد من المتبرعين.\",\n    \"attachments\": [\n      {\n        \"id\": 115,\n        \"name\": \"1.png\",\n        \"url\": \"http://localhost/storage/support_tickets/1.png\",\n        \"mime\": \"image/png\",\n        \"size_kb\": 26\n      }\n    ],\n    \"reply_eta_text\": \"ستتلقى الرد خلال 24–48 ساعة عبر المحادثة\",\n    \"action_buttons\": [\n      {\n        \"key\": \"send_message\",\n        \"label\": \"إرسال\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/tickets/1/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"TKT-2608-001\",\n    \"type\": {\n      \"value\": \"complaint\",\n      \"label\": \"Complaint\"\n    },\n    \"title\": \"تأخر الرد على نداء طارئ\",\n    \"created_at\": \"2026-10-12\",\n    \"status\": {\n      \"value\": \"replied\",\n      \"label\": \"Replied\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"last_reply_at\": \"2026-10-14T12:30:28+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"details\": \"تأخرت الإدارة في الرد على نداء طارئ نشرناه صباح الأمس وفاتت فرصة استجابة عدد من المتبرعين.\",\n    \"attachments\": [\n      {\n        \"id\": 115,\n        \"name\": \"1.png\",\n        \"url\": \"http://localhost/storage/support_tickets/1.png\",\n        \"mime\": \"image/png\",\n        \"size_kb\": 26\n      }\n    ],\n    \"reply_eta_text\": \"Reply within 24–48h in the chat\",\n    \"action_buttons\": [\n      {\n        \"key\": \"send_message\",\n        \"label\": \"Send\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/tickets/1/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — طلب خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "ticket-messages",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"chat messages (sender, is_mine, files)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"body\"); pm.expect(o).to.have.property(\"sender\"); pm.expect(o).to.have.property(\"is_mine\"); pm.expect(o).to.have.property(\"attachments\"); pm.expect(o).to.have.property(\"created_at\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"oldest first, sender is the employee or the administration\", () => { const l = pm.response.json().data.data; l.forEach((m) => pm.expect([\"employee\", \"admin\"]).to.include(m.sender.type)); const ids = l.map((m) => m.id); pm.expect(ids).to.eql([...ids].sort((a, b) => a - b)); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/tickets/{id}/messages",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "tickets",
                        "{id}",
                        "messages"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_ticket_id}}",
                          "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                        }
                      ],
                      "query": [
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nرسائل محادثة التذكرة.\n\n## Screens\n- P56 Ticket — المحادثة — provider (web) `779:6005`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6005&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6005&scaling=scale-down&content-scaling=fixed)\n- P57 Replied — provider (web) `779:6281`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6281&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6281&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Path params\n- `id` — required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets · example: `1`\n\n### Query params\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `conversation_messages` (conversable = التذكرة) تصاعدياً: النص، المرفقات، الوقت، المرسل (موظف/الإدارة)، `is_mine`.\n2. يعلّم رسائل الإدارة `read_at`.\n3. ترقيم بالأقدم (cursor `before_id` اختياري).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | طلب خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 10,\n        \"body\": \"نعتذر عن التأخير، تمت مراجعة النداء مع فريق العمليات.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"إدارة أنقذني\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [\n          {\n            \"id\": 116,\n            \"name\": \"3.png\",\n            \"url\": \"http://localhost/storage/conversation_messages/3.png\",\n            \"mime\": \"image/png\",\n            \"size_kb\": 2\n          }\n        ],\n        \"created_at\": \"2026-10-13T02:30:28+00:00\"\n      },\n      {\n        \"id\": 11,\n        \"body\": \"نرجو تفعيل إشعار تلقائي عند نشر النداءات الحرجة.\",\n        \"sender\": {\n          \"type\": \"employee\",\n          \"name\": \"أسماء ماجد الرشيد\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-14T03:30:28+00:00\"\n      },\n      {\n        \"id\": 12,\n        \"body\": \"تم رفع طلبكم لفريق التطوير وسنوافيكم بالمستجدات.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"إدارة أنقذني\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-14T12:30:28+00:00\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 10,\n        \"body\": \"نعتذر عن التأخير، تمت مراجعة النداء مع فريق العمليات.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"Enqethni Administration\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [\n          {\n            \"id\": 116,\n            \"name\": \"3.png\",\n            \"url\": \"http://localhost/storage/conversation_messages/3.png\",\n            \"mime\": \"image/png\",\n            \"size_kb\": 2\n          }\n        ],\n        \"created_at\": \"2026-10-13T02:30:28+00:00\"\n      },\n      {\n        \"id\": 11,\n        \"body\": \"نرجو تفعيل إشعار تلقائي عند نشر النداءات الحرجة.\",\n        \"sender\": {\n          \"type\": \"employee\",\n          \"name\": \"أسماء ماجد الرشيد\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-14T03:30:28+00:00\"\n      },\n      {\n        \"id\": 12,\n        \"body\": \"تم رفع طلبكم لفريق التطوير وسنوافيكم بالمستجدات.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"Enqethni Administration\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-14T12:30:28+00:00\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — طلب خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "send-ticket-message",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"sent message\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"body\"); pm.expect(o).to.have.property(\"sender\"); pm.expect(o).to.have.property(\"is_mine\"); pm.expect(o).to.have.property(\"attachments\"); pm.expect(o).to.have.property(\"created_at\"); });",
                          "pm.test(\"my own message from the employee\", () => { const d = pm.response.json().data; pm.expect(d.is_mine).to.eql(true); pm.expect(d.sender.type).to.eql(\"employee\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/tickets/{id}/messages",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "tickets",
                        "{id}",
                        "messages"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_ticket_id}}",
                          "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                        }
                      ]
                    },
                    "description": "## Purpose\nرد الموظف في محادثة التذكرة.\n\n## Screens\n- P56 Ticket — composer — provider (web) `779:6005`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6005&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6005&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Path params\n- `id` — required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets · example: `1`\n\n### Body (form-data)\n- `body` — required_without:attachments · nullable|required_without:attachments|string|max:2000 · نص الرسالة · example: `شكراً، بانتظار التحديث`\n- `attachments[]` — optional · nullable|array|max:5; .* mimes:jpg,jpeg,png,pdf|max:5120 · المرفقات · example: `(files)`\n\n\n## Behaviour notes\n**Steps:**\n1. يتطلب `body` أو مرفقاً واحداً على الأقل.\n2. closed → 409 (لا إعادة فتح).\n3. رد الموظف ينقل التذكرة من `replied` → `under_review`؛ يحدّث `last_reply_at`.\n\n**Status / state transitions:** `replied` → `under_review` (employee reply).\n\n**Side effects (Laravel-first):**\n- none.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_ticket_message` | الأدمن | رد جديد على طلب | :code | ticket_id | admin tickets.show |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/ticket.message_sent` → ar «تم إرسال الرسالة» / en \"Message sent\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | الطلب مغلق | `ticket.closed` | تم إغلاق الطلب ولا يمكن إرسال رسائل جديدة | This request is closed |\n| 422 | فشل التحقق (body/attachments) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | طلب خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "body",
                          "value": "شكراً، بانتظار التحديث",
                          "type": "text",
                          "description": "required_without:attachments · nullable|required_without:attachments|string|max:2000 · نص الرسالة"
                        },
                        {
                          "key": "attachments[]",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|array|max:5; .* mimes:jpg,jpeg,png,pdf|max:5120 · المرفقات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "شكراً، بانتظار التحديث",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال الرسالة\",\n  \"data\": {\n    \"id\": 19,\n    \"body\": \"شكراً، بانتظار التحديث\",\n    \"sender\": {\n      \"type\": \"employee\",\n      \"name\": \"خالد فهد السبيعي\"\n    },\n    \"is_mine\": true,\n    \"attachments\": [],\n    \"created_at\": \"2026-10-18T21:56:02+00:00\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "شكراً، بانتظار التحديث",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Message sent\",\n  \"data\": {\n    \"id\": 20,\n    \"body\": \"شكراً، بانتظار التحديث\",\n    \"sender\": {\n      \"type\": \"employee\",\n      \"name\": \"خالد فهد السبيعي\"\n    },\n    \"is_mine\": true,\n    \"attachments\": [],\n    \"created_at\": \"2026-10-18T21:56:02+00:00\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success with an attachment (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "مرفق للتوضيح",
                              "type": "text"
                            },
                            {
                              "key": "attachments[]",
                              "value": "(screenshot.png)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال الرسالة\",\n  \"data\": {\n    \"id\": 21,\n    \"body\": \"مرفق للتوضيح\",\n    \"sender\": {\n      \"type\": \"employee\",\n      \"name\": \"خالد فهد السبيعي\"\n    },\n    \"is_mine\": true,\n    \"attachments\": [\n      {\n        \"id\": 120,\n        \"name\": \"screenshot.png\",\n        \"url\": \"http://localhost/storage/conversation_messages/screenshot.png\",\n        \"mime\": \"image/png\",\n        \"size_kb\": 1\n      }\n    ],\n    \"created_at\": \"2026-10-18T21:56:02+00:00\"\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — الطلب مغلق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "شكراً، بانتظار التحديث",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إغلاق الطلب ولا يمكن إرسال رسائل جديدة\",\n  \"key\": \"closed\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (body/attachments)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل body مطلوب إذا لم يتوفّر attachments.\",\n  \"errors\": {\n    \"body\": [\n      \"الحقل body مطلوب إذا لم يتوفّر attachments.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — طلب خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "شكراً، بانتظار التحديث",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "شكراً، بانتظار التحديث",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/tickets/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "tickets",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_ticket_id}}",
                              "description": "required · ticket in scope · الطلب · source: GET {{base_url}}provider/tickets"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "شكراً، بانتظار التحديث",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "offers",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"lean offer cards (blood type, quantity, total, colored status, buttons)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"unit_price\"); pm.expect(o).to.have.property(\"total_price\"); pm.expect(o).to.have.property(\"currency\"); pm.expect(o).to.have.property(\"submitted_at\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"updated_at\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"the fixed buttons: cancel + send_message\", () => { const l = pm.response.json().data.data; if (l.length) pm.expect(l[0].action_buttons.map((b) => b.key)).to.eql([\"cancel\", \"send_message\"]); });",
                          "{ const l = pm.response.json().data.data; const o = l.find((x) => x.action_buttons?.find((b) => b.key === \"cancel\")?.is_available) || l[0]; if (o) { pm.collectionVariables.set(\"provider_offer_id\", o.id); pm.environment.set(\"provider_offer_id\", o.id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/offers",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "offers"
                      ],
                      "query": [
                        {
                          "key": "status",
                          "value": "under_review",
                          "description": "optional · nullable|Rule::enum(OfferStatus::class) · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة عروض الفائض.\n\n## Screens\n- P62 My Blood Supply Offers — provider (web) `779:9114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9114&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Query params\n- `status` — optional · nullable|Rule::enum(OfferStatus::class) · الحالة · example: `under_review`\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. عروض النطاق الأحدث أولاً؛ فلتر `status`, `branch_id`.\n2. كل صف: الرقم، الفصيلة، المكوّن، الكمية، السعر، تاريخ الإرسال، الحالة، آخر تحديث + `action_buttons` (`cancel` متاح في under_review فقط).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "under_review",
                              "description": "optional · nullable|Rule::enum(OfferStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 7,\n        \"code\": \"OFR-2608-007\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"كريات حمراء\"\n        },\n        \"quantity\": 4,\n        \"unit_price\": \"130.00\",\n        \"total_price\": \"520.00\",\n        \"currency\": \"ر.س\",\n        \"submitted_at\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"ملغي\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"updated_at\": \"2026-10-15T06:37:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء العرض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/7/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"إرسال رسالة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/7/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"code\": \"OFR-2608-006\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"quantity\": 5,\n        \"unit_price\": \"400.00\",\n        \"total_price\": \"2000.00\",\n        \"currency\": \"ر.س\",\n        \"submitted_at\": \"2026-10-08\",\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"مرفوض\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"updated_at\": \"2026-10-09T14:53:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء العرض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/6/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"إرسال رسالة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/6/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"code\": \"OFR-2608-005\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 6,\n        \"unit_price\": \"110.00\",\n        \"total_price\": \"660.00\",\n        \"currency\": \"ر.س\",\n        \"submitted_at\": \"2026-09-26\",\n        \"status\": {\n          \"value\": \"completed\",\n          \"label\": \"اكتملت العملية\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"updated_at\": \"2026-09-29T19:36:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء العرض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/5/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"إرسال رسالة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/5/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"code\": \"OFR-2608-004\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 12,\n        \"unit_price\": \"100.00\",\n        \"total_price\": \"1200.00\",\n        \"currency\": \"ر.س\",\n        \"submitted_at\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"transporting\",\n          \"label\": \"جاري نقل الأكياس\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"updated_at\": \"2026-10-14T17:59:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء العرض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/4/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"إرسال رسالة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/4/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"code\": \"OFR-2608-003\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"بلازما\"\n        },\n        \"quantity\": 8,\n        \"unit_price\": \"120.00\",\n        \"total_price\": \"960.00\",\n        \"currency\": \"ر.س\",\n        \"submitted_at\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"تم قبول العرض مبدئياً\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"updated_at\": \"2026-10-15T21:40:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء العرض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/3/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"إرسال رسالة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/3/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"OFR-2608-002\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"دم كامل\"\n        },\n        \"quantity\": 10,\n        \"unit_price\": \"100.00\",\n        \"total_price\": \"1000.00\",\n        \"currency\": \"ر.س\",\n        \"submitted_at\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"under_review\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"updated_at\": \"2026-10-18T06:33:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء العرض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/2/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"إرسال رسالة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/2/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 1,\n        \"code\": \"OFR-2608-001\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"صفائح دموية\"\n        },\n        \"quantity\": 15,\n        \"unit_price\": \"450.00\",\n        \"total_price\": \"6750.00\",\n        \"currency\": \"ر.س\",\n        \"submitted_at\": \"2026-10-10\",\n        \"status\": {\n          \"value\": \"coordinating\",\n          \"label\": \"جاري التنسيق مع الجهات\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"updated_at\": \"2026-10-12T14:23:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"إلغاء العرض\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/1/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"إرسال رسالة\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/1/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 7,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 7\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "under_review",
                              "description": "optional · nullable|Rule::enum(OfferStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 7,\n        \"code\": \"OFR-2608-007\",\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"donation_type\": {\n          \"id\": 5,\n          \"name\": \"Red Cells\"\n        },\n        \"quantity\": 4,\n        \"unit_price\": \"130.00\",\n        \"total_price\": \"520.00\",\n        \"currency\": \"SAR\",\n        \"submitted_at\": \"2026-10-13\",\n        \"status\": {\n          \"value\": \"cancelled\",\n          \"label\": \"Cancelled\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"updated_at\": \"2026-10-15T06:37:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel offer\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/7/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"Send a message\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/7/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"code\": \"OFR-2608-006\",\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"quantity\": 5,\n        \"unit_price\": \"400.00\",\n        \"total_price\": \"2000.00\",\n        \"currency\": \"SAR\",\n        \"submitted_at\": \"2026-10-08\",\n        \"status\": {\n          \"value\": \"rejected\",\n          \"label\": \"Rejected\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"updated_at\": \"2026-10-09T14:53:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel offer\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/6/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"Send a message\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/6/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"code\": \"OFR-2608-005\",\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 6,\n        \"unit_price\": \"110.00\",\n        \"total_price\": \"660.00\",\n        \"currency\": \"SAR\",\n        \"submitted_at\": \"2026-09-26\",\n        \"status\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"updated_at\": \"2026-09-29T19:36:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel offer\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/5/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"Send a message\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/5/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"code\": \"OFR-2608-004\",\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 12,\n        \"unit_price\": \"100.00\",\n        \"total_price\": \"1200.00\",\n        \"currency\": \"SAR\",\n        \"submitted_at\": \"2026-10-12\",\n        \"status\": {\n          \"value\": \"transporting\",\n          \"label\": \"Transporting\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"updated_at\": \"2026-10-14T17:59:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel offer\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/4/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"Send a message\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/4/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"code\": \"OFR-2608-003\",\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"donation_type\": {\n          \"id\": 3,\n          \"name\": \"Plasma\"\n        },\n        \"quantity\": 8,\n        \"unit_price\": \"120.00\",\n        \"total_price\": \"960.00\",\n        \"currency\": \"SAR\",\n        \"submitted_at\": \"2026-10-14\",\n        \"status\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"Initially accepted\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"updated_at\": \"2026-10-15T21:40:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel offer\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/3/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"Send a message\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/3/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"OFR-2608-002\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 1,\n          \"name\": \"Whole Blood\"\n        },\n        \"quantity\": 10,\n        \"unit_price\": \"100.00\",\n        \"total_price\": \"1000.00\",\n        \"currency\": \"SAR\",\n        \"submitted_at\": \"2026-10-17\",\n        \"status\": {\n          \"value\": \"under_review\",\n          \"label\": \"Under review\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"updated_at\": \"2026-10-18T06:33:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel offer\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/2/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"Send a message\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/2/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 1,\n        \"code\": \"OFR-2608-001\",\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"donation_type\": {\n          \"id\": 2,\n          \"name\": \"Platelets\"\n        },\n        \"quantity\": 15,\n        \"unit_price\": \"450.00\",\n        \"total_price\": \"6750.00\",\n        \"currency\": \"SAR\",\n        \"submitted_at\": \"2026-10-10\",\n        \"status\": {\n          \"value\": \"coordinating\",\n          \"label\": \"Coordinating\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"updated_at\": \"2026-10-12T14:23:27+00:00\",\n        \"branch\": {\n          \"id\": 1,\n          \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"cancel\",\n            \"label\": \"Cancel offer\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/1/cancel\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": true,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"send_message\",\n            \"label\": \"Send a message\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/offers/1/messages\",\n            \"style\": \"primary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 7,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 7\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers?status=bogus",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "under_review",
                              "description": "optional · nullable|Rule::enum(OfferStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الحالة غير صالح.\",\n  \"errors\": {\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "under_review",
                              "description": "optional · nullable|Rule::enum(OfferStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "under_review",
                              "description": "optional · nullable|Rule::enum(OfferStatus::class) · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "create-offer",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"sent offer\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"unit_price\"); pm.expect(o).to.have.property(\"total_price\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"expires_on\"); pm.expect(o).to.have.property(\"available_on\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"pipeline\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"under review, total = price x quantity, five pipeline stages\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"under_review\"); pm.expect(d.code).to.match(/^OFR-[0-9]{4}-[0-9]+$/); pm.expect(Number(d.total_price)).to.eql(Number(d.unit_price) * d.quantity); pm.expect(d.pipeline).to.have.length(5); pm.expect(d.pipeline[0].state).to.eql(\"current\"); });",
                          "{ const id = pm.response.json().data.id; if (id) { pm.collectionVariables.set(\"provider_offer_id\", id); pm.environment.set(\"provider_offer_id\", id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/offers",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "offers"
                      ]
                    },
                    "description": "## Purpose\nإرسال عرض فائض أكياس للإدارة.\n\n## Screens\n- P59 Create Blood Supply Offer — provider (web) `779:6872`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6872&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-6872&scaling=scale-down&content-scaling=fixed)\n- P60 Offer Review — provider (web) `1231:286`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1231-286&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1231-286&scaling=scale-down&content-scaling=fixed)\n- P63 Offer Review v02 — provider (web) `779:7473`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7473&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7473&scaling=scale-down&content-scaling=fixed)\n- P61 Offer Submitted — provider (web) `1231:839`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1231-839&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1231-839&scaling=scale-down&content-scaling=fixed)\n- P64 Offer Submitted v02 — provider (web) `779:7753`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7753&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7753&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Body (form-data)\n- `branch_id` — owner: required · required for owner|exists in scope · المستشفى (الفرع) · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `donation_type_id` — required · required|exists:donation_types,id · المكوّن · source: GET {{base_url}}lookups/donation-types · example: `2`\n- `blood_type` — required · required|Rule::enum(BloodType::class) · الفصيلة · example: `A+`\n- `unit_price` — required · required|numeric|min:0|max:100000 · السعر/كيس (ر.س) · example: `450`\n- `quantity` — required · required|integer|min:1|lte:current stock · العدد · source: GET {{base_url}}provider/inventory?donation_type_id=2 · example: `15`\n- `expires_on` — optional · nullable|date|after_or_equal:available_on · تاريخ الانتهاء · example: `2026-10-30`\n- `available_on` — required · required|date|after_or_equal:today · تاريخ التوفر · example: `2026-10-20`\n- `reason` — required · required|string|max:255 · السبب · example: `فائض عن احتياج المستشفى`\n- `notes` — optional · nullable|string|max:1000 · ملاحظات\n\n\n## Behaviour notes\n**Steps:**\n1. P59 → P60 مراجعة (client، الإجمالي = السعر × العدد) → «إرسال العرض» = هذا الطلب.\n2. `quantity` ≤ رصيد المخزون الحالي (الفرع+الفصيلة+المكوّن) وإلا 422 بالرصيد.\n3. ينشئ `blood_offers` (`status=under_review`, code OFR-, `confirmed_accuracy_at=now` — **الإرسال = الإقرار**) + سجل حالة.\n4. لا دفع — السعر معلومة فقط؛ الاكتمال لا يصرف من المخزون آلياً.\n\n**Status / state transitions:** `OfferStatus`: — → `under_review`.\n\n**Side effects (Laravel-first):**\n- none.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_offer_created` | الأدمن | عرض أكياس جديد | :org — :qty :type :blood_type | offer_id | admin offers.show |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/offer.created` → ar «تم إرسال العرض إلى الإدارة» / en \"Offer sent to the administration\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | الكمية أكبر من الرصيد | `offer.quantity_exceeds_stock` | الكمية أكبر من الرصيد المتاح (:balance) | Quantity exceeds available stock (:balance) |\n| 422 | فشل التحقق (donation_type_id, blood_type, unit_price, available_on, reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "owner: required · required for owner|exists in scope · المستشفى (الفرع) · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "donation_type_id",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|exists:donation_types,id · المكوّن · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "blood_type",
                          "value": "A+",
                          "type": "text",
                          "description": "required · required|Rule::enum(BloodType::class) · الفصيلة"
                        },
                        {
                          "key": "unit_price",
                          "value": "450",
                          "type": "text",
                          "description": "required · required|numeric|min:0|max:100000 · السعر/كيس (ر.س)"
                        },
                        {
                          "key": "quantity",
                          "value": "15",
                          "type": "text",
                          "description": "required · required|integer|min:1|lte:current stock · العدد · source: GET {{base_url}}provider/inventory?donation_type_id=2"
                        },
                        {
                          "key": "expires_on",
                          "value": "{{d12}}",
                          "type": "text",
                          "description": "optional · nullable|date|after_or_equal:available_on · تاريخ الانتهاء"
                        },
                        {
                          "key": "available_on",
                          "value": "{{d2}}",
                          "type": "text",
                          "description": "required · required|date|after_or_equal:today · تاريخ التوفر"
                        },
                        {
                          "key": "reason",
                          "value": "فائض عن احتياج المستشفى",
                          "type": "text",
                          "description": "required · required|string|max:255 · السبب"
                        },
                        {
                          "key": "notes",
                          "value": "الأكياس مفحوصة ومطابقة",
                          "type": "text",
                          "description": "optional · nullable|string|max:1000 · ملاحظات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "unit_price",
                              "value": "450",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "available_on",
                              "value": "2026-10-21",
                              "type": "text"
                            },
                            {
                              "key": "expires_on",
                              "value": "2026-10-31",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "فائض عن احتياج المستشفى",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "الأكياس مفحوصة ومطابقة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال العرض إلى الإدارة\",\n  \"data\": {\n    \"id\": 8,\n    \"code\": \"OFR-2610-001\",\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"donation_type\": {\n      \"id\": 2,\n      \"name\": \"صفائح دموية\"\n    },\n    \"quantity\": 15,\n    \"unit_price\": \"450.00\",\n    \"total_price\": \"6750.00\",\n    \"currency\": \"ر.س\",\n    \"submitted_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"قيد المراجعة\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"updated_at\": \"2026-10-18T21:56:02+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء العرض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/8/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"send_message\",\n        \"label\": \"إرسال رسالة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/8/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"expires_on\": \"2026-10-31\",\n    \"available_on\": \"2026-10-21\",\n    \"reason\": \"فائض عن احتياج المستشفى\",\n    \"notes\": \"الأكياس مفحوصة ومطابقة\",\n    \"status_reason\": null,\n    \"pipeline\": [\n      {\n        \"key\": {\n          \"value\": \"under_review\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"state\": \"current\",\n        \"at\": \"2026-10-18T21:56:02+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"تم قبول العرض مبدئياً\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"coordinating\",\n          \"label\": \"جاري التنسيق مع الجهات\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"transporting\",\n          \"label\": \"جاري نقل الأكياس\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"completed\",\n          \"label\": \"اكتملت العملية\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "unit_price",
                              "value": "450",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "available_on",
                              "value": "2026-10-21",
                              "type": "text"
                            },
                            {
                              "key": "expires_on",
                              "value": "2026-10-31",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "فائض عن احتياج المستشفى",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "الأكياس مفحوصة ومطابقة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Offer sent to the administration\",\n  \"data\": {\n    \"id\": 9,\n    \"code\": \"OFR-2610-001\",\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"donation_type\": {\n      \"id\": 2,\n      \"name\": \"Platelets\"\n    },\n    \"quantity\": 15,\n    \"unit_price\": \"450.00\",\n    \"total_price\": \"6750.00\",\n    \"currency\": \"SAR\",\n    \"submitted_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"under_review\",\n      \"label\": \"Under review\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"updated_at\": \"2026-10-18T21:56:02+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel offer\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/9/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"send_message\",\n        \"label\": \"Send a message\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/9/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"expires_on\": \"2026-10-31\",\n    \"available_on\": \"2026-10-21\",\n    \"reason\": \"فائض عن احتياج المستشفى\",\n    \"notes\": \"الأكياس مفحوصة ومطابقة\",\n    \"status_reason\": null,\n    \"pipeline\": [\n      {\n        \"key\": {\n          \"value\": \"under_review\",\n          \"label\": \"Under review\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"state\": \"current\",\n        \"at\": \"2026-10-18T21:56:02+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"Initially accepted\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"coordinating\",\n          \"label\": \"Coordinating\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"transporting\",\n          \"label\": \"Transporting\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 422 — الكمية أكبر من الرصيد",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "quantity",
                              "value": "999",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "unit_price",
                              "value": "450",
                              "type": "text"
                            },
                            {
                              "key": "available_on",
                              "value": "2026-10-21",
                              "type": "text"
                            },
                            {
                              "key": "expires_on",
                              "value": "2026-10-31",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "فائض عن احتياج المستشفى",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "الأكياس مفحوصة ومطابقة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الكمية أكبر من الرصيد المتاح (30)\",\n  \"errors\": {\n    \"quantity\": [\n      \"الكمية أكبر من الرصيد المتاح (30)\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (donation_type_id, blood_type, unit_price, quantity, available_on, reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل نوع التبرع مطلوب. (and 5 more errors)\",\n  \"errors\": {\n    \"donation_type_id\": [\n      \"الحقل نوع التبرع مطلوب.\"\n    ],\n    \"blood_type\": [\n      \"الحقل فصيلة الدم مطلوب.\"\n    ],\n    \"unit_price\": [\n      \"الحقل unit price مطلوب.\"\n    ],\n    \"quantity\": [\n      \"الحقل الكمية مطلوب.\"\n    ],\n    \"available_on\": [\n      \"الحقل available on مطلوب.\"\n    ],\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "unit_price",
                              "value": "450",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "available_on",
                              "value": "2026-10-21",
                              "type": "text"
                            },
                            {
                              "key": "expires_on",
                              "value": "2026-10-31",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "فائض عن احتياج المستشفى",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "الأكياس مفحوصة ومطابقة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "donation_type_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "blood_type",
                              "value": "A+",
                              "type": "text"
                            },
                            {
                              "key": "unit_price",
                              "value": "450",
                              "type": "text"
                            },
                            {
                              "key": "quantity",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "available_on",
                              "value": "2026-10-21",
                              "type": "text"
                            },
                            {
                              "key": "expires_on",
                              "value": "2026-10-31",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "فائض عن احتياج المستشفى",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "الأكياس مفحوصة ومطابقة",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "offer-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"offer details\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"quantity\"); pm.expect(o).to.have.property(\"unit_price\"); pm.expect(o).to.have.property(\"total_price\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"expires_on\"); pm.expect(o).to.have.property(\"available_on\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"notes\"); pm.expect(o).to.have.property(\"status_reason\"); pm.expect(o).to.have.property(\"pipeline\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"pipeline stages (colored key, state, time)\", () => { const l = pm.response.json().data.pipeline; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"key\"); pm.expect(o).to.have.property(\"state\"); pm.expect(o).to.have.property(\"at\"); } });",
                          "pm.test(\"five stages in order, at most one current\", () => { const p = pm.response.json().data.pipeline; pm.expect(p.map((x) => x.key.value)).to.eql([\"under_review\", \"initially_accepted\", \"coordinating\", \"transporting\", \"completed\"]); pm.expect(p.filter((x) => x.state === \"current\").length).to.be.at.most(1); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/offers/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "offers",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_offer_id}}",
                          "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل العرض ومساره.\n\n## Screens\n- P65 Offer Details / Under Review — provider (web) `779:7964`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&scaling=scale-down&content-scaling=fixed)\n- P66 Offer Details / Coordination in Progress — provider (web) `779:8369`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-8369&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-8369&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Path params\n- `id` — required · offer in scope · العرض · source: GET {{base_url}}provider/offers · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. الرأس، الكمية، السعر، الإجمالي، **مسار العرض** (5 مراحل: قيد المراجعة → قبول مبدئي → جاري التنسيق → جاري النقل → اكتملت؛ مع الحالي + الأوقات من `blood_offer_status_logs`)، تفاصيل العرض، `status_reason` (رفض/إلغاء)، `action_buttons` (`cancel`, `send_message`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | عرض خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"OFR-2608-001\",\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"donation_type\": {\n      \"id\": 2,\n      \"name\": \"صفائح دموية\"\n    },\n    \"quantity\": 15,\n    \"unit_price\": \"450.00\",\n    \"total_price\": \"6750.00\",\n    \"currency\": \"ر.س\",\n    \"submitted_at\": \"2026-10-10\",\n    \"status\": {\n      \"value\": \"coordinating\",\n      \"label\": \"جاري التنسيق مع الجهات\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"updated_at\": \"2026-10-12T14:23:27+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء العرض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/1/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"send_message\",\n        \"label\": \"إرسال رسالة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/1/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"expires_on\": \"2026-10-30\",\n    \"available_on\": \"2026-10-16\",\n    \"reason\": \"فائض عن احتياج المستشفى\",\n    \"notes\": \"الأكياس مفحوصة ومطابقة لمعايير الجودة\",\n    \"status_reason\": null,\n    \"pipeline\": [\n      {\n        \"key\": {\n          \"value\": \"under_review\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"state\": \"done\",\n        \"at\": \"2026-10-10T14:23:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"تم قبول العرض مبدئياً\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"done\",\n        \"at\": \"2026-10-11T00:23:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"coordinating\",\n          \"label\": \"جاري التنسيق مع الجهات\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"current\",\n        \"at\": \"2026-10-11T17:23:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"transporting\",\n          \"label\": \"جاري نقل الأكياس\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"completed\",\n          \"label\": \"اكتملت العملية\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"OFR-2608-001\",\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"donation_type\": {\n      \"id\": 2,\n      \"name\": \"Platelets\"\n    },\n    \"quantity\": 15,\n    \"unit_price\": \"450.00\",\n    \"total_price\": \"6750.00\",\n    \"currency\": \"SAR\",\n    \"submitted_at\": \"2026-10-10\",\n    \"status\": {\n      \"value\": \"coordinating\",\n      \"label\": \"Coordinating\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"updated_at\": \"2026-10-12T14:23:27+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel offer\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/1/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"send_message\",\n        \"label\": \"Send a message\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/1/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"expires_on\": \"2026-10-30\",\n    \"available_on\": \"2026-10-16\",\n    \"reason\": \"فائض عن احتياج المستشفى\",\n    \"notes\": \"الأكياس مفحوصة ومطابقة لمعايير الجودة\",\n    \"status_reason\": null,\n    \"pipeline\": [\n      {\n        \"key\": {\n          \"value\": \"under_review\",\n          \"label\": \"Under review\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"state\": \"done\",\n        \"at\": \"2026-10-10T14:23:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"Initially accepted\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"done\",\n        \"at\": \"2026-10-11T00:23:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"coordinating\",\n          \"label\": \"Coordinating\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"current\",\n        \"at\": \"2026-10-11T17:23:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"transporting\",\n          \"label\": \"Transporting\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — عرض خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "offer-messages",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"chat messages (sender, is_mine, files)\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"body\"); pm.expect(o).to.have.property(\"sender\"); pm.expect(o).to.have.property(\"is_mine\"); pm.expect(o).to.have.property(\"attachments\"); pm.expect(o).to.have.property(\"created_at\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/offers/{id}/messages",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "offers",
                        "{id}",
                        "messages"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_offer_id}}",
                          "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                        }
                      ],
                      "query": [
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nرسائل محادثة العرض.\n\n## Screens\n- P65 Offer Details — المحادثة — provider (web) `779:7964`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&scaling=scale-down&content-scaling=fixed)\n- P66 Coordination — المحادثة — provider (web) `779:8369`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-8369&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-8369&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Path params\n- `id` — required · offer in scope · العرض · source: GET {{base_url}}provider/offers · example: `1`\n\n### Query params\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. نفس `ConversationService` (conversable = BloodOffer).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | عرض خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"body\": \"تم استلام عرضكم، نراجع التفاصيل مع الجهات المستفيدة.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"إدارة أنقذني\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [\n          {\n            \"id\": 114,\n            \"name\": \"1.png\",\n            \"url\": \"http://localhost/storage/conversation_messages/1.png\",\n            \"mime\": \"image/png\",\n            \"size_kb\": 26\n          }\n        ],\n        \"created_at\": \"2026-10-10T16:23:27+00:00\"\n      },\n      {\n        \"id\": 2,\n        \"body\": \"نحن جاهزون لتجهيز الأكياس في أي وقت وفق الجدول المتفق عليه.\",\n        \"sender\": {\n          \"type\": \"employee\",\n          \"name\": \"أحمد محمد العمري\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-11T09:23:27+00:00\"\n      },\n      {\n        \"id\": 3,\n        \"body\": \"تم التنسيق مع الجهة المستفيدة، سنرسل لكم موعد الاستلام.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"إدارة أنقذني\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-11T12:23:27+00:00\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"body\": \"تم استلام عرضكم، نراجع التفاصيل مع الجهات المستفيدة.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"Enqethni Administration\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [\n          {\n            \"id\": 114,\n            \"name\": \"1.png\",\n            \"url\": \"http://localhost/storage/conversation_messages/1.png\",\n            \"mime\": \"image/png\",\n            \"size_kb\": 26\n          }\n        ],\n        \"created_at\": \"2026-10-10T16:23:27+00:00\"\n      },\n      {\n        \"id\": 2,\n        \"body\": \"نحن جاهزون لتجهيز الأكياس في أي وقت وفق الجدول المتفق عليه.\",\n        \"sender\": {\n          \"type\": \"employee\",\n          \"name\": \"أحمد محمد العمري\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-11T09:23:27+00:00\"\n      },\n      {\n        \"id\": 3,\n        \"body\": \"تم التنسيق مع الجهة المستفيدة، سنرسل لكم موعد الاستلام.\",\n        \"sender\": {\n          \"type\": \"admin\",\n          \"name\": \"Enqethni Administration\"\n        },\n        \"is_mine\": false,\n        \"attachments\": [],\n        \"created_at\": \"2026-10-11T12:23:27+00:00\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 3,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 3\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — عرض خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ],
                          "query": [
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "send-offer-message",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"sent message\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"body\"); pm.expect(o).to.have.property(\"sender\"); pm.expect(o).to.have.property(\"is_mine\"); pm.expect(o).to.have.property(\"attachments\"); pm.expect(o).to.have.property(\"created_at\"); });",
                          "pm.test(\"my own message from the employee\", () => { const d = pm.response.json().data; pm.expect(d.is_mine).to.eql(true); pm.expect(d.sender.type).to.eql(\"employee\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/offers/{id}/messages",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "offers",
                        "{id}",
                        "messages"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_offer_id}}",
                          "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                        }
                      ]
                    },
                    "description": "## Purpose\nرسالة الموظف على العرض.\n\n## Screens\n- P65 Offer Details — composer — provider (web) `779:7964`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&scaling=scale-down&content-scaling=fixed)\n- P66 Coordination — composer — provider (web) `779:8369`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-8369&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-8369&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Path params\n- `id` — required · offer in scope · العرض · source: GET {{base_url}}provider/offers · example: `1`\n\n### Body (form-data)\n- `body` — required_without:attachments · nullable|required_without:attachments|string|max:2000 · نص الرسالة · example: `الأكياس جاهزة للاستلام`\n- `attachments[]` — optional · nullable|array|max:5; .* mimes:jpg,jpeg,png,pdf|max:5120 · المرفقات · example: `(files)`\n\n\n## Behaviour notes\n**Steps:**\n1. مسموح ما لم يكن العرض completed/rejected/cancelled (409).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_offer_message` | الأدمن | رسالة على عرض | :code | offer_id | admin offers.show |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/offer.message_sent` → ar «تم إرسال الرسالة» / en \"Message sent\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | العرض منتهٍ | `offer.closed` | لا يمكن إرسال رسائل على عرض منتهٍ | This offer is closed |\n| 422 | فشل التحقق (body/attachments) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | عرض خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "body",
                          "value": "الأكياس جاهزة للاستلام",
                          "type": "text",
                          "description": "required_without:attachments · nullable|required_without:attachments|string|max:2000 · نص الرسالة"
                        },
                        {
                          "key": "attachments[]",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|array|max:5; .* mimes:jpg,jpeg,png,pdf|max:5120 · المرفقات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "الأكياس جاهزة للاستلام",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إرسال الرسالة\",\n  \"data\": {\n    \"id\": 22,\n    \"body\": \"الأكياس جاهزة للاستلام\",\n    \"sender\": {\n      \"type\": \"employee\",\n      \"name\": \"خالد فهد السبيعي\"\n    },\n    \"is_mine\": true,\n    \"attachments\": [],\n    \"created_at\": \"2026-10-18T21:56:02+00:00\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "الأكياس جاهزة للاستلام",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Message sent\",\n  \"data\": {\n    \"id\": 23,\n    \"body\": \"الأكياس جاهزة للاستلام\",\n    \"sender\": {\n      \"type\": \"employee\",\n      \"name\": \"خالد فهد السبيعي\"\n    },\n    \"is_mine\": true,\n    \"attachments\": [],\n    \"created_at\": \"2026-10-18T21:56:02+00:00\"\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — العرض منتهي (completed/rejected/cancelled)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "الأكياس جاهزة للاستلام",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إغلاق العرض ولا يمكن إرسال رسائل جديدة\",\n  \"key\": \"closed\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (body/attachments)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل body مطلوب إذا لم يتوفّر attachments.\",\n  \"errors\": {\n    \"body\": [\n      \"الحقل body مطلوب إذا لم يتوفّر attachments.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — عرض خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "الأكياس جاهزة للاستلام",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "الأكياس جاهزة للاستلام",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/messages",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "messages"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "body",
                              "value": "الأكياس جاهزة للاستلام",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "cancel-offer",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const base = pm.variables.replaceIn(\"{{base_url}}\"); const today = new Date().toISOString().slice(0, 10); const auth = { Accept: \"application/json\", Authorization: \"Bearer \" + pm.variables.get(\"employee_token\") }; const go = (page, filled) => pm.sendRequest({ url: base + \"provider/offers?status=under_review&page=\" + page, method: \"GET\", header: auth }, (e, r) => { if (e || r.code !== 200) return; let l = r.json().data; const meta = l && l.pagination; l = Array.isArray(l) ? l : (l.data || []); const it = l.find((o) => true); if (it) { pm.collectionVariables.set(\"provider_offer_id\", it.id); pm.environment.set(\"provider_offer_id\", it.id);  return; } if (meta && page < 6 && meta.current_page < meta.last_page) return go(page + 1, filled); }); go(1, false); } catch (e) {}",
                          "}",
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"cancelled offer\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"status_reason\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "pm.test(\"cancelled with its reason, no more buttons\", () => { const d = pm.response.json().data; pm.expect(d.status.value).to.eql(\"cancelled\"); pm.expect(d.status_reason).to.be.a(\"string\"); pm.expect(d.action_buttons.every((b) => b.is_available === false)).to.eql(true); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/offers/{id}/cancel",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "offers",
                        "{id}",
                        "cancel"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_offer_id}}",
                          "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                        }
                      ]
                    },
                    "description": "## Purpose\nإلغاء عرض قيد المراجعة.\n\n## Screens\n- P62 My Offers — إلغاء — provider (web) `779:9114`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9114&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9114&scaling=scale-down&content-scaling=fixed)\n- P65 Offer Details — إلغاء العرض — provider (web) `779:7964`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-7964&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:contact_admin`\n\n## Parameters & fields\n### Path params\n- `id` — required · offer in scope · العرض · source: GET {{base_url}}provider/offers · example: `2`\n\n### Body (form-data)\n- `reason` — required · required|string|max:500 · سبب الإلغاء · example: `تم استخدام الأكياس داخلياً`\n\n\n## Behaviour notes\n**Steps:**\n1. `under_review` فقط (قبل القبول المبدئي) → `cancelled` + `status_reason` + سجل.\n\n**Status / state transitions:** `under_review` → `cancelled`.\n\n**Side effects (Laravel-first):**\n- none.\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `admin_offer_message` | الأدمن (database) | رسالة على عرض | :code — أُلغي من البنك | offer_id | admin offers.show |\n\n> Postman: the pre-request picks an offer UNDER REVIEW.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/offer.cancelled` → ar «تم إلغاء العرض» / en \"Offer cancelled\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | بعد القبول المبدئي | `offer.not_cancellable` | لا يمكن إلغاء العرض بعد قبوله مبدئياً | The offer can't be cancelled after initial acceptance |\n| 422 | فشل التحقق (reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | عرض خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `contact_admin` (`employee.section:contact_admin`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"contact_admin\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "reason",
                          "value": "تم استخدام الأكياس داخلياً",
                          "type": "text",
                          "description": "required · required|string|max:500 · سبب الإلغاء"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تم استخدام الأكياس داخلياً",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إلغاء العرض\",\n  \"data\": {\n    \"id\": 2,\n    \"code\": \"OFR-2608-002\",\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"quantity\": 10,\n    \"unit_price\": \"100.00\",\n    \"total_price\": \"1000.00\",\n    \"currency\": \"ر.س\",\n    \"submitted_at\": \"2026-10-17\",\n    \"status\": {\n      \"value\": \"cancelled\",\n      \"label\": \"ملغي\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"updated_at\": \"2026-10-18T21:56:02+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"إلغاء العرض\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/2/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"send_message\",\n        \"label\": \"إرسال رسالة\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/2/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ],\n    \"expires_on\": \"2026-11-07\",\n    \"available_on\": \"2026-10-20\",\n    \"reason\": \"فائض مخزون الدم الكامل\",\n    \"notes\": \"الأكياس مفحوصة ومطابقة لمعايير الجودة\",\n    \"status_reason\": \"تم استخدام الأكياس داخلياً\",\n    \"pipeline\": [\n      {\n        \"key\": {\n          \"value\": \"under_review\",\n          \"label\": \"قيد المراجعة\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"state\": \"done\",\n        \"at\": \"2026-10-17T14:33:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"تم قبول العرض مبدئياً\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"coordinating\",\n          \"label\": \"جاري التنسيق مع الجهات\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"transporting\",\n          \"label\": \"جاري نقل الأكياس\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"completed\",\n          \"label\": \"اكتملت العملية\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تم استخدام الأكياس داخلياً",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Offer cancelled\",\n  \"data\": {\n    \"id\": 2,\n    \"code\": \"OFR-2608-002\",\n    \"blood_type\": {\n      \"value\": \"A+\",\n      \"label\": \"A+\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"quantity\": 10,\n    \"unit_price\": \"100.00\",\n    \"total_price\": \"1000.00\",\n    \"currency\": \"SAR\",\n    \"submitted_at\": \"2026-10-17\",\n    \"status\": {\n      \"value\": \"cancelled\",\n      \"label\": \"Cancelled\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"updated_at\": \"2026-10-18T21:56:02+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"cancel\",\n        \"label\": \"Cancel offer\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/2/cancel\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": true,\n        \"is_available\": false\n      },\n      {\n        \"key\": \"send_message\",\n        \"label\": \"Send a message\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/offers/2/messages\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": false\n      }\n    ],\n    \"expires_on\": \"2026-11-07\",\n    \"available_on\": \"2026-10-20\",\n    \"reason\": \"فائض مخزون الدم الكامل\",\n    \"notes\": \"الأكياس مفحوصة ومطابقة لمعايير الجودة\",\n    \"status_reason\": \"تم استخدام الأكياس داخلياً\",\n    \"pipeline\": [\n      {\n        \"key\": {\n          \"value\": \"under_review\",\n          \"label\": \"Under review\",\n          \"color\": \"#D97706\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"state\": \"done\",\n        \"at\": \"2026-10-17T14:33:27+00:00\"\n      },\n      {\n        \"key\": {\n          \"value\": \"initially_accepted\",\n          \"label\": \"Initially accepted\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"coordinating\",\n          \"label\": \"Coordinating\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"transporting\",\n          \"label\": \"Transporting\",\n          \"color\": \"#0369A1\",\n          \"bg_color\": \"#E0F2FE\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      },\n      {\n        \"key\": {\n          \"value\": \"completed\",\n          \"label\": \"Completed\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#DCFCE7\"\n        },\n        \"state\": \"pending\",\n        \"at\": null\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — بعد القبول المبدئي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تم استخدام الأكياس داخلياً",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن إلغاء العرض بعد قبوله مبدئياً\",\n  \"key\": \"not_cancellable\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل السبب مطلوب.\",\n  \"errors\": {\n    \"reason\": [\n      \"الحقل السبب مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — عرض خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تم استخدام الأكياس داخلياً",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تم استخدام الأكياس داخلياً",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم contact_admin (employee.section:contact_admin)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/offers/{id}/cancel",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "offers",
                            "{id}",
                            "cancel"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_offer_id}}",
                              "description": "required · offer in scope · العرض · source: GET {{base_url}}provider/offers"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "reason",
                              "value": "تم استخدام الأكياس داخلياً",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"contact_admin\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `support` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/ticket-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/ticket-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "ticket-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `type` (نوع الطلب: شكوى / مقترح / استفسار) — مصدر أنواع الطلبات في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P53 Submit Complaint or Suggestion — provider (web) `779:5227`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5227&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5227&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\TicketType` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/ticket-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "ticket-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"complaint\",\n      \"label\": \"شكوى\"\n    },\n    {\n      \"value\": \"suggestion\",\n      \"label\": \"مقترح\"\n    },\n    {\n      \"value\": \"inquiry\",\n      \"label\": \"استفسار\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/ticket-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "ticket-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"complaint\",\n      \"label\": \"Complaint\"\n    },\n    {\n      \"value\": \"suggestion\",\n      \"label\": \"Suggestion\"\n    },\n    {\n      \"value\": \"inquiry\",\n      \"label\": \"Inquiry\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/ticket-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "ticket-types"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/ticket-types",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "ticket-types"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/inventory",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"stock screen\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"donation_type\"); pm.expect(o).to.have.property(\"summary\"); pm.expect(o).to.have.property(\"alerts\"); pm.expect(o).to.have.property(\"stocks\"); });",
                              "pm.test(\"summary counters\", () => { const o = pm.response.json().data.summary; pm.expect(o).to.have.property(\"total_bags\"); pm.expect(o).to.have.property(\"available_types\"); pm.expect(o).to.have.property(\"types_count\"); pm.expect(o).to.have.property(\"low_count\"); pm.expect(o).to.have.property(\"critical_count\"); });",
                              "pm.test(\"eight cards with a colored level; alerts are low/critical only\", () => { const d = pm.response.json().data; pm.expect(d.stocks).to.have.length(8); d.stocks.forEach((s) => { [\"blood_type\", \"quantity\", \"level\", \"last_updated_at\"].forEach((k) => pm.expect(s).to.have.property(k)); pm.expect(s.level).to.have.property(\"bg_color\"); }); d.alerts.forEach((a) => pm.expect([\"low\", \"critical\"]).to.include(a.level.value)); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/inventory",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "inventory"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "donation_type_id",
                              "value": "1",
                              "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر الرصيد المتاح للعرض (`quantity` ≤ رصيد الفرع + الفصيلة + المكوّن) — أرصدة المخزون ومستوياتها.\n\n## Screens\n- P49 Blood Inventory — provider (web) `776:3046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:inventory`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `donation_type_id` — optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. لفرع واحد (موظف) أو `branch_id`/كل الفروع (owner)، ولمكوّن `donation_type_id` (الافتراضي دم كامل).\n2. لكل فصيلة (8): الكمية، `level` (`StockLevel`: qty ≤ low → critical؛ ≤ medium → low؛ وإلا available — من `inventory_thresholds`)، آخر تحديث.\n3. الملخص: إجمالي الأكياس، الفصائل المتوفرة (n من 8)، عدد المنخفض، عدد الحرج، `alerts[]` (منخفض/حرج لكل فصيلة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id, donation_type_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `inventory` (`employee.section:inventory`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"inventory\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/inventory?donation_type_id=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "inventory"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"summary\": {\n      \"total_bags\": 326,\n      \"available_types\": 4,\n      \"types_count\": 8,\n      \"low_count\": 2,\n      \"critical_count\": 2\n    },\n    \"alerts\": [\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون AB- وصل إلى مستوى حرج — 6 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون O- وصل إلى مستوى حرج — 8 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون A- منخفض — 17 كيس\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون B- منخفض — 22 كيس\"\n      }\n    ],\n    \"stocks\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"quantity\": 84,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"quantity\": 17,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-10-05T07:39:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"quantity\": 56,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"quantity\": 22,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"quantity\": 31,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"quantity\": 6,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-16T13:48:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"quantity\": 102,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-10-16T15:37:00+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"quantity\": 8,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-15T12:09:50+00:00\"\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/inventory",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "inventory"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"summary\": {\n      \"total_bags\": 326,\n      \"available_types\": 4,\n      \"types_count\": 8,\n      \"low_count\": 2,\n      \"critical_count\": 2\n    },\n    \"alerts\": [\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"AB- stock reached a critical level — only 6 bags\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"O- stock reached a critical level — only 8 bags\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"A- stock is low — 17 bags\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"B- stock is low — 22 bags\"\n      }\n    ],\n    \"stocks\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"quantity\": 84,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"quantity\": 17,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-10-05T07:39:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"quantity\": 56,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"quantity\": 22,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"Low\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"quantity\": 31,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:51+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"quantity\": 6,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-16T13:48:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"quantity\": 102,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-10-16T15:37:00+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"quantity\": 8,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"Critical\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-15T12:09:50+00:00\"\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — the owner reads every branch",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/inventory",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "inventory"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"branch\": {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"summary\": {\n      \"total_bags\": 634,\n      \"available_types\": 3,\n      \"types_count\": 8,\n      \"low_count\": 3,\n      \"critical_count\": 2\n    },\n    \"alerts\": [\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون AB- وصل إلى مستوى حرج — 12 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"message\": \"مخزون O- وصل إلى مستوى حرج — 28 أكياس فقط\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون A- منخفض — 34 كيس\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون B- منخفض — 36 كيس\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"message\": \"مخزون AB+ منخفض — 55 كيس\"\n      }\n    ],\n    \"stocks\": [\n      {\n        \"blood_type\": {\n          \"value\": \"A+\",\n          \"label\": \"A+\"\n        },\n        \"quantity\": 156,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"A-\",\n          \"label\": \"A-\"\n        },\n        \"quantity\": 34,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-10-05T07:39:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B+\",\n          \"label\": \"B+\"\n        },\n        \"quantity\": 112,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"B-\",\n          \"label\": \"B-\"\n        },\n        \"quantity\": 36,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB+\",\n          \"label\": \"AB+\"\n        },\n        \"quantity\": 55,\n        \"level\": {\n          \"value\": \"low\",\n          \"label\": \"منخفض\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"last_updated_at\": \"2026-09-11T14:27:52+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"AB-\",\n          \"label\": \"AB-\"\n        },\n        \"quantity\": 12,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-16T13:48:50+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O+\",\n          \"label\": \"O+\"\n        },\n        \"quantity\": 201,\n        \"level\": {\n          \"value\": \"available\",\n          \"label\": \"متوفر\",\n          \"color\": \"#15803D\",\n          \"bg_color\": \"#F0FDF4\"\n        },\n        \"last_updated_at\": \"2026-10-16T15:37:00+00:00\"\n      },\n      {\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"quantity\": 28,\n        \"level\": {\n          \"value\": \"critical\",\n          \"label\": \"حرج\",\n          \"color\": \"#C8102E\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"last_updated_at\": \"2026-10-15T12:09:50+00:00\"\n      }\n    ]\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (branch_id, donation_type_id)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/inventory?branch_id=999999&donation_type_id=999999",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "inventory"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح. (and 1 more error)\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ],\n    \"donation_type_id\": [\n      \"حقل المحدد نوع التبرع غير صالح.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/inventory",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "inventory"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف لا يملك قسم inventory (employee.section:inventory) → {\"key\":\"forbidden_section\",\"data\":{\"section\":\"inventory\"}}",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/inventory",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "inventory"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches",
                                  "disabled": true
                                },
                                {
                                  "key": "donation_type_id",
                                  "value": "1",
                                  "description": "optional · nullable|exists:donation_types,id (default whole blood) · المكوّن · source: GET {{base_url}}lookups/donation-types",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"inventory\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/tickets",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "tickets",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ التذاكر على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: tickets (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"tickets\": 0\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/offers",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "offers",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ عروض الفائض على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: offers (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"offers\": 0\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "Settings",
          "item": [
            {
              "name": "devices",
              "description": "Flow `devices` — 3 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "store-device",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"device_id\"); pm.expect(o).to.have.property(\"device_type\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_used_at\"); });",
                          "{ const v = pm.response.json().data.device_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"device_id\", v); pm.environment.set(\"device_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/devices",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "devices"
                      ]
                    },
                    "description": "## Purpose\nتسجيل جهاز (web push) للموظف.\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Body (form-data)\n- `device_id` — required · required|string|max:191 · معرّف الجهاز · example: `web-chrome-01`\n- `device_type` — required · required|Rule::enum(DeviceType::class) · النوع · example: `web`\n- `fcm_token` — required · required|string|max:4096 · توكن FCM · example: `fcm-web-…`\n- `lang` — optional · nullable|Rule::enum(Lang::class) · اللغة · example: `ar`\n\n\n## Behaviour notes\n**Steps:**\n1. `updateOrCreate` على (userable=Employee, device_id) — `device_type=web` عادة.\n2. الموظفون يستلمون push دائماً (لا toggle).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.saved` → ar «تم حفظ الجهاز» / en \"Device saved\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (fcm_token) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "device_id",
                          "value": "web-chrome-01",
                          "type": "text",
                          "description": "required · required|string|max:191 · معرّف الجهاز"
                        },
                        {
                          "key": "device_type",
                          "value": "web",
                          "type": "text",
                          "description": "required · required|Rule::enum(DeviceType::class) · النوع"
                        },
                        {
                          "key": "fcm_token",
                          "value": "fcm-web-token-0001",
                          "type": "text",
                          "description": "required · required|string|max:4096 · توكن FCM"
                        },
                        {
                          "key": "lang",
                          "value": "ar",
                          "type": "text",
                          "description": "optional · nullable|Rule::enum(Lang::class) · اللغة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "web-chrome-01",
                              "type": "text"
                            },
                            {
                              "key": "device_type",
                              "value": "web",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-web-token-0001",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ الجهاز\",\n  \"data\": {\n    \"device_id\": \"web-chrome-01\",\n    \"device_type\": {\n      \"value\": \"web\",\n      \"label\": \"الويب\"\n    },\n    \"lang\": \"ar\",\n    \"last_used_at\": \"2026-10-18T08:18:10+00:00\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "web-chrome-01",
                              "type": "text"
                            },
                            {
                              "key": "device_type",
                              "value": "web",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-web-token-0001",
                              "type": "text"
                            },
                            {
                              "key": "lang",
                              "value": "en",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Device saved\",\n  \"data\": {\n    \"device_id\": \"web-chrome-01\",\n    \"device_type\": {\n      \"value\": \"web\",\n      \"label\": \"Web\"\n    },\n    \"lang\": \"en\",\n    \"last_used_at\": \"2026-10-18T08:18:10+00:00\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (fcm_token)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل معرّف الجهاز مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"device_id\": [\n      \"الحقل معرّف الجهاز مطلوب.\"\n    ],\n    \"device_type\": [\n      \"الحقل نوع الجهاز مطلوب.\"\n    ],\n    \"fcm_token\": [\n      \"الحقل توكن الجهاز مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "web-chrome-01",
                              "type": "text"
                            },
                            {
                              "key": "device_type",
                              "value": "web",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-web-token-0001",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "update-device",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"device_id\"); pm.expect(o).to.have.property(\"device_type\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_used_at\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/devices/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "devices",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{device_id}}",
                          "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                        }
                      ]
                    },
                    "description": "## Purpose\nتحديث توكن جهاز للموظف.\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Path params\n- `id` — required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices · example: `web-chrome-01`\n\n### Body (form-data)\n- `fcm_token` — required · required|string|max:4096 · التوكن الجديد · example: `fcm-web-new…`\n- `lang` — optional · nullable|Rule::enum(Lang::class) · اللغة · example: `en`\n\n\n## Behaviour notes\n**Steps:**\n1. يحدّث `fcm_token`/`lang` للجهاز المملوك.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.saved` → ar «تم حفظ الجهاز» / en \"Device saved\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (fcm_token) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 404 | جهاز غير مملوك | `messages.not_found` | العنصر غير موجود | Not found |\n\n> الـ route هو `PUT {{base_url}}provider/devices/{id}`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "fcm_token",
                          "value": "fcm-web-token-0002",
                          "type": "text",
                          "description": "required · required|string|max:4096 · التوكن الجديد"
                        },
                        {
                          "key": "lang",
                          "value": "ar",
                          "type": "text",
                          "description": "optional · nullable|Rule::enum(Lang::class) · اللغة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — token refreshed",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-web-token-0002",
                              "type": "text"
                            },
                            {
                              "key": "lang",
                              "value": "ar",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ الجهاز\",\n  \"data\": {\n    \"device_id\": \"web-chrome-01\",\n    \"device_type\": {\n      \"value\": \"web\",\n      \"label\": \"الويب\"\n    },\n    \"lang\": \"ar\",\n    \"last_used_at\": \"2026-10-18T08:18:10+00:00\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (fcm_token)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل توكن الجهاز مطلوب.\",\n  \"errors\": {\n    \"fcm_token\": [\n      \"الحقل توكن الجهاز مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — جهاز غير مملوك",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "fcm_token",
                              "value": "x",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "delete-device",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/devices/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "devices",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{device_id}}",
                          "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                        }
                      ]
                    },
                    "description": "## Purpose\nحذف جهاز للموظف.\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Path params\n- `id` — required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices · example: `web-chrome-01`\n\n\n## Behaviour notes\n**Steps:**\n1. يحذف الجهاز المملوك.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.deleted` → ar «تم حذف الجهاز» / en \"Device removed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 404 | جهاز غير مملوك | `messages.not_found` | العنصر غير موجود | Not found |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الجهاز\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 404 — جهاز غير مملوك",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{device_id}}",
                              "description": "required · device_id owned · الجهاز · source: POST {{base_url}}provider/devices"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `devices` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/devices",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"device_id\"); pm.expect(o).to.have.property(\"device_type\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_used_at\"); });",
                              "{ const v = pm.response.json().data.device_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"device_id\", v); pm.environment.set(\"device_id\", v); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/devices",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "devices"
                          ]
                        },
                        "description": "## Purpose\nمصدر `device_id` (يُحفظ تلقائياً في `{{device_id}}`) — تسجيل جهاز (web push) للموظف.\n\n## Screens\nلا شاشة لها في التصميم — يستدعيها التطبيق/المتصفح بصمت (بعد تسجيل الدخول وعند تجديد توكن FCM) بلا واجهة. ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Body (form-data)\n- `device_id` — required · required|string|max:191 · معرّف الجهاز · example: `web-chrome-01`\n- `device_type` — required · required|Rule::enum(DeviceType::class) · النوع · example: `web`\n- `fcm_token` — required · required|string|max:4096 · توكن FCM · example: `fcm-web-…`\n- `lang` — optional · nullable|Rule::enum(Lang::class) · اللغة · example: `ar`\n\n\n## Behaviour notes\n**Steps:**\n1. `updateOrCreate` على (userable=Employee, device_id) — `device_type=web` عادة.\n2. الموظفون يستلمون push دائماً (لا toggle).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/devices.saved` → ar «تم حفظ الجهاز» / en \"Device saved\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (fcm_token) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "device_id",
                              "value": "web-chrome-01",
                              "type": "text",
                              "description": "required · required|string|max:191 · معرّف الجهاز"
                            },
                            {
                              "key": "device_type",
                              "value": "web",
                              "type": "text",
                              "description": "required · required|Rule::enum(DeviceType::class) · النوع"
                            },
                            {
                              "key": "fcm_token",
                              "value": "fcm-web-token-0001",
                              "type": "text",
                              "description": "required · required|string|max:4096 · توكن FCM"
                            },
                            {
                              "key": "lang",
                              "value": "ar",
                              "type": "text",
                              "description": "optional · nullable|Rule::enum(Lang::class) · اللغة"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/devices",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "devices"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "device_id",
                                  "value": "web-chrome-01",
                                  "type": "text"
                                },
                                {
                                  "key": "device_type",
                                  "value": "web",
                                  "type": "text"
                                },
                                {
                                  "key": "fcm_token",
                                  "value": "fcm-web-token-0001",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم حفظ الجهاز\",\n  \"data\": {\n    \"device_id\": \"web-chrome-01\",\n    \"device_type\": {\n      \"value\": \"web\",\n      \"label\": \"الويب\"\n    },\n    \"lang\": \"ar\",\n    \"last_used_at\": \"2026-10-18T08:18:10+00:00\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/devices",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "devices"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "device_id",
                                  "value": "web-chrome-01",
                                  "type": "text"
                                },
                                {
                                  "key": "device_type",
                                  "value": "web",
                                  "type": "text"
                                },
                                {
                                  "key": "fcm_token",
                                  "value": "fcm-web-token-0001",
                                  "type": "text"
                                },
                                {
                                  "key": "lang",
                                  "value": "en",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Device saved\",\n  \"data\": {\n    \"device_id\": \"web-chrome-01\",\n    \"device_type\": {\n      \"value\": \"web\",\n      \"label\": \"Web\"\n    },\n    \"lang\": \"en\",\n    \"last_used_at\": \"2026-10-18T08:18:10+00:00\"\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (fcm_token)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/devices",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "devices"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": []
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل معرّف الجهاز مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"device_id\": [\n      \"الحقل معرّف الجهاز مطلوب.\"\n    ],\n    \"device_type\": [\n      \"الحقل نوع الجهاز مطلوب.\"\n    ],\n    \"fcm_token\": [\n      \"الحقل توكن الجهاز مطلوب.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/devices",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "devices"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "device_id",
                                  "value": "web-chrome-01",
                                  "type": "text"
                                },
                                {
                                  "key": "device_type",
                                  "value": "web",
                                  "type": "text"
                                },
                                {
                                  "key": "fcm_token",
                                  "value": "fcm-web-token-0001",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "notifications",
              "description": "Flow `notifications` — 6 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "notifications",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"rows\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"type\"); pm.expect(o).to.have.property(\"title\"); pm.expect(o).to.have.property(\"body\"); pm.expect(o).to.have.property(\"tag\"); pm.expect(o).to.have.property(\"extra_line\"); pm.expect(o).to.have.property(\"blood_type\"); pm.expect(o).to.have.property(\"screen\"); pm.expect(o).to.have.property(\"ids\"); pm.expect(o).to.have.property(\"is_read\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"group\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "{ const items = pm.response.json().data.data; pm.test(\"pagination + meta\", () => { pm.expect(pm.response.json().data).to.have.property(\"pagination\"); pm.expect(pm.response.json().data.meta).to.have.property(\"unread_count\"); }); if (items.length) { pm.collectionVariables.set(\"notification_id\", items[0].id); pm.environment.set(\"notification_id\", items[0].id); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/notifications",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "notifications"
                      ],
                      "query": [
                        {
                          "key": "unread",
                          "value": "0",
                          "description": "optional · nullable|boolean · غير المقروءة فقط",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · الصفحة",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nإشعارات الموظف (لوحة البنك).\n\n## Screens\n- P22 Notifications — provider (web) `226:29623`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&scaling=scale-down&content-scaling=fixed)\n- P23 Notifications v02 (غير المقروءة) — provider (web) `226:30147`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&scaling=scale-down&content-scaling=fixed)\n- P24 All Read «جميع الإشعارات مقروءة» — provider (web) `240:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `unread` — optional · nullable|boolean · غير المقروءة فقط · example: `0`\n- `page` — optional · nullable|integer|min:1 · الصفحة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع إشعارات الحساب (`database` channel) الأحدث أولاً، مقسمة لصفحات.\n2. `unread=1` → غير المقروءة فقط (تبويب «غير المقروءة»).\n3. كل عنصر: `title`/`body` **بلغة الطلب** من `data.title[lang]` (المخزّن ar+en)، `type{value,label}`, `extra_line` (المستشفى/الموعد/رقم الوحدة)، `blood_type` شارة، `screen` + ids للتنقل، `is_read`, `created_at`, `group` (`today|yesterday|earlier` — محسوب للتجميع).\n4. `meta`: `unread_count`, `total`.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (provider_* — 16 نوعاً — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": \"a2ae3a94-b6b5-4213-a491-e1024a27679f\",\n        \"type\": {\n          \"value\": \"provider_appeal_closed\",\n          \"label\": \"إغلاق نداء\"\n        },\n        \"title\": \"إغلاق نداء\",\n        \"body\": \"تم إغلاق النداء APL-2608-001 — ازدحام الموعد\",\n        \"tag\": \"النداءات\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-15T05:11:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"462bd0f5-1cad-4fa5-978e-6f6a3a111ba6\",\n        \"type\": {\n          \"value\": \"provider_appeal_response\",\n          \"label\": \"استجابة جديدة على نداء\"\n        },\n        \"title\": \"استجابة جديدة على نداء\",\n        \"body\": \"استجاب متبرع جديد (DNR-00017) للنداء APL-2608-001\",\n        \"tag\": \"النداءات\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1,\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-14T18:47:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"65a38cf4-4827-49b0-b058-834c9940394e\",\n        \"type\": {\n          \"value\": \"provider_stock_low\",\n          \"label\": \"مخزون منخفض\"\n        },\n        \"title\": \"مخزون منخفض\",\n        \"body\": \"مخزون فصيلة O- منخفض — 8 كيس\",\n        \"tag\": \"المخزون\",\n        \"extra_line\": null,\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"screen\": \"provider_inventory\",\n        \"ids\": {\n          \"branch_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-12T22:07:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"c8c69fb2-4a11-4e94-a5a3-e9a862fa6222\",\n        \"type\": {\n          \"value\": \"provider_stock_critical\",\n          \"label\": \"مخزون حرج\"\n        },\n        \"title\": \"مخزون حرج\",\n        \"body\": \"مخزون فصيلة O- (دم كامل) وصل إلى مستوى حرج — 8 أكياس فقط\",\n        \"tag\": \"المخزون\",\n        \"extra_line\": null,\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"screen\": \"provider_inventory\",\n        \"ids\": {\n          \"branch_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-10T23:40:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"172adbd0-8dbc-4dc8-9b61-5bb43ed27b81\",\n        \"type\": {\n          \"value\": \"provider_need_closed\",\n          \"label\": \"تم إقفال الاحتياج\"\n        },\n        \"title\": \"تم إقفال الاحتياج\",\n        \"body\": \"NEED-2608-003: تم التوفير جزئياً (6 من 8)\",\n        \"tag\": \"الاحتياجات\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_need\",\n        \"ids\": {\n          \"need_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-09T03:22:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"32af1c78-d1d2-4b4a-b4a8-5a33c826899c\",\n        \"type\": {\n          \"value\": \"provider_appeal_status_changed\",\n          \"label\": \"تحديث نداء\"\n        },\n        \"title\": \"تحديث نداء\",\n        \"body\": \"النداء APL-2608-001 أصبح قيد المراجعة\",\n        \"tag\": \"النداءات\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-08T15:36:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"b7e1c864-107c-44b0-a78e-946ae89cea40\",\n        \"type\": {\n          \"value\": \"provider_user_appeal_approved\",\n          \"label\": \"نداء مستخدم معتمد لفرعكم\"\n        },\n        \"title\": \"نداء مستخدم معتمد لفرعكم\",\n        \"body\": \"اعتُمد نداء APL-2610-007 لفصيلة O- على مستشفى الملك فيصل التخصصي - الفرع الرئيسي\",\n        \"tag\": \"النداءات\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 15\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-06T21:41:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"73b81939-e3a1-4b00-ba05-2e7648897e0d\",\n        \"type\": {\n          \"value\": \"provider_appeal_fulfilled\",\n          \"label\": \"اكتمال استجابات النداء\"\n        },\n        \"title\": \"اكتمال استجابات النداء\",\n        \"body\": \"اكتملت استجابات النداء APL-2608-001 — دم كامل O-\",\n        \"tag\": \"النداءات\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-06T07:59:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"5488f803-5107-4f68-8963-58f278bebda2\",\n        \"type\": {\n          \"value\": \"provider_ticket_replied\",\n          \"label\": \"تم الرد على طلبك\"\n        },\n        \"title\": \"تم الرد على طلبك\",\n        \"body\": \"رد جديد على الطلب TKT-2608-001\",\n        \"tag\": \"التواصل مع الإدارة\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_ticket\",\n        \"ids\": {\n          \"ticket_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-05T05:30:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"8174e9c3-5c04-4ae2-834f-edcaa5e5fe0d\",\n        \"type\": {\n          \"value\": \"provider_ticket_closed\",\n          \"label\": \"تم إغلاق الطلب\"\n        },\n        \"title\": \"تم إغلاق الطلب\",\n        \"body\": \"أُغلق الطلب TKT-2608-001\",\n        \"tag\": \"التواصل مع الإدارة\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_ticket\",\n        \"ids\": {\n          \"ticket_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-01T10:43:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"f450bbd9-0bae-4fea-b8f9-2ce5828288af\",\n        \"type\": {\n          \"value\": \"provider_booking_rescheduled\",\n          \"label\": \"تعديل وقت موعد\"\n        },\n        \"title\": \"تعديل وقت موعد\",\n        \"body\": \"طُلب تعديل وقت الحجز BK-2610-057 من 09:00 إلى 10:30\",\n        \"tag\": \"المواعيد\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointment\",\n        \"ids\": {\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-30T13:16:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"2d6a9c74-41eb-444c-9745-e306b4239653\",\n        \"type\": {\n          \"value\": \"provider_new_booking\",\n          \"label\": \"حجز جديد\"\n        },\n        \"title\": \"حجز جديد\",\n        \"body\": \"تم تسجيل حجز جديد BK-2610-057 — دم كامل — 2026/10/25 10:00\",\n        \"tag\": \"المواعيد\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointment\",\n        \"ids\": {\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-29T06:13:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"2950e631-338f-49f6-97ea-2d7a9b30daca\",\n        \"type\": {\n          \"value\": \"provider_booking_expired\",\n          \"label\": \"حجوزات أُلغيت تلقائياً\"\n        },\n        \"title\": \"حجوزات أُلغيت تلقائياً\",\n        \"body\": \"أُلغي 3 حجز لعدم التأكيد في الوقت المحدد\",\n        \"tag\": \"المواعيد\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointments\",\n        \"ids\": {\n          \"branch_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-28T06:48:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"f7f0c06c-21cf-43d3-86b4-46dc882a4ca3\",\n        \"type\": {\n          \"value\": \"provider_booking_cancelled\",\n          \"label\": \"تحديث على موعد\"\n        },\n        \"title\": \"تحديث على موعد\",\n        \"body\": \"تم تغيير حالة الحجز BK-2610-057 إلى ملغي بطلب المتبرع\",\n        \"tag\": \"المواعيد\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointment\",\n        \"ids\": {\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-28T01:45:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"623d91ed-9393-464b-babd-539aa84e3c45\",\n        \"type\": {\n          \"value\": \"provider_offer_status_changed\",\n          \"label\": \"تحديث على عرضك\"\n        },\n        \"title\": \"تحديث على عرضك\",\n        \"body\": \"العرض OFR-2608-001 أصبح قيد المراجعة\",\n        \"tag\": \"التواصل مع الإدارة\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_offer\",\n        \"ids\": {\n          \"offer_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-27T23:41:42+00:00\",\n        \"group\": \"earlier\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 16,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"unread_count\": 0,\n      \"total\": 16\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": \"a2ae3a94-b6b5-4213-a491-e1024a27679f\",\n        \"type\": {\n          \"value\": \"provider_appeal_closed\",\n          \"label\": \"Appeal closed\"\n        },\n        \"title\": \"Appeal closed\",\n        \"body\": \"Appeal APL-2608-001 was closed — slot overcrowded\",\n        \"tag\": \"Appeals\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-15T05:11:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"462bd0f5-1cad-4fa5-978e-6f6a3a111ba6\",\n        \"type\": {\n          \"value\": \"provider_appeal_response\",\n          \"label\": \"New appeal response\"\n        },\n        \"title\": \"New appeal response\",\n        \"body\": \"A new donor (DNR-00017) responded to appeal APL-2608-001\",\n        \"tag\": \"Appeals\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1,\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-14T18:47:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"65a38cf4-4827-49b0-b058-834c9940394e\",\n        \"type\": {\n          \"value\": \"provider_stock_low\",\n          \"label\": \"Low stock\"\n        },\n        \"title\": \"Low stock\",\n        \"body\": \"Stock of O- is low — 8 bags\",\n        \"tag\": \"Inventory\",\n        \"extra_line\": null,\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"screen\": \"provider_inventory\",\n        \"ids\": {\n          \"branch_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-12T22:07:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"c8c69fb2-4a11-4e94-a5a3-e9a862fa6222\",\n        \"type\": {\n          \"value\": \"provider_stock_critical\",\n          \"label\": \"Critical stock\"\n        },\n        \"title\": \"Critical stock\",\n        \"body\": \"Stock of O- (whole blood) reached a critical level — only 8 bags\",\n        \"tag\": \"Inventory\",\n        \"extra_line\": null,\n        \"blood_type\": {\n          \"value\": \"O-\",\n          \"label\": \"O-\"\n        },\n        \"screen\": \"provider_inventory\",\n        \"ids\": {\n          \"branch_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-10T23:40:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"172adbd0-8dbc-4dc8-9b61-5bb43ed27b81\",\n        \"type\": {\n          \"value\": \"provider_need_closed\",\n          \"label\": \"Need closed\"\n        },\n        \"title\": \"Need closed\",\n        \"body\": \"NEED-2608-003: partially supplied (6 of 8)\",\n        \"tag\": \"Needs\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_need\",\n        \"ids\": {\n          \"need_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-09T03:22:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"32af1c78-d1d2-4b4a-b4a8-5a33c826899c\",\n        \"type\": {\n          \"value\": \"provider_appeal_status_changed\",\n          \"label\": \"Appeal update\"\n        },\n        \"title\": \"Appeal update\",\n        \"body\": \"Appeal APL-2608-001 is now under review\",\n        \"tag\": \"Appeals\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-08T15:36:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"b7e1c864-107c-44b0-a78e-946ae89cea40\",\n        \"type\": {\n          \"value\": \"provider_user_appeal_approved\",\n          \"label\": \"User appeal approved for your branch\"\n        },\n        \"title\": \"User appeal approved for your branch\",\n        \"body\": \"Appeal APL-2610-007 for O- was approved on KFSH - Main Branch\",\n        \"tag\": \"Appeals\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 15\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-06T21:41:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"73b81939-e3a1-4b00-ba05-2e7648897e0d\",\n        \"type\": {\n          \"value\": \"provider_appeal_fulfilled\",\n          \"label\": \"Appeal responses completed\"\n        },\n        \"title\": \"Appeal responses completed\",\n        \"body\": \"Responses to appeal APL-2608-001 are complete — whole blood O-\",\n        \"tag\": \"Appeals\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appeal\",\n        \"ids\": {\n          \"appeal_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-06T07:59:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"5488f803-5107-4f68-8963-58f278bebda2\",\n        \"type\": {\n          \"value\": \"provider_ticket_replied\",\n          \"label\": \"Your request was answered\"\n        },\n        \"title\": \"Your request was answered\",\n        \"body\": \"New reply on request TKT-2608-001\",\n        \"tag\": \"Contact administration\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_ticket\",\n        \"ids\": {\n          \"ticket_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-05T05:30:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"8174e9c3-5c04-4ae2-834f-edcaa5e5fe0d\",\n        \"type\": {\n          \"value\": \"provider_ticket_closed\",\n          \"label\": \"Request closed\"\n        },\n        \"title\": \"Request closed\",\n        \"body\": \"Request TKT-2608-001 was closed\",\n        \"tag\": \"Contact administration\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_ticket\",\n        \"ids\": {\n          \"ticket_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-10-01T10:43:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"f450bbd9-0bae-4fea-b8f9-2ce5828288af\",\n        \"type\": {\n          \"value\": \"provider_booking_rescheduled\",\n          \"label\": \"Booking rescheduled\"\n        },\n        \"title\": \"Booking rescheduled\",\n        \"body\": \"A time change was requested for BK-2610-057 from 09:00 to 10:30\",\n        \"tag\": \"Appointments\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointment\",\n        \"ids\": {\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-30T13:16:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"2d6a9c74-41eb-444c-9745-e306b4239653\",\n        \"type\": {\n          \"value\": \"provider_new_booking\",\n          \"label\": \"New booking\"\n        },\n        \"title\": \"New booking\",\n        \"body\": \"New booking BK-2610-057 — whole blood — 2026/10/25 10:00\",\n        \"tag\": \"Appointments\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointment\",\n        \"ids\": {\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-29T06:13:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"2950e631-338f-49f6-97ea-2d7a9b30daca\",\n        \"type\": {\n          \"value\": \"provider_booking_expired\",\n          \"label\": \"Bookings auto-cancelled\"\n        },\n        \"title\": \"Bookings auto-cancelled\",\n        \"body\": \"3 bookings were auto-cancelled for not being confirmed in time\",\n        \"tag\": \"Appointments\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointments\",\n        \"ids\": {\n          \"branch_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-28T06:48:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"f7f0c06c-21cf-43d3-86b4-46dc882a4ca3\",\n        \"type\": {\n          \"value\": \"provider_booking_cancelled\",\n          \"label\": \"Booking update\"\n        },\n        \"title\": \"Booking update\",\n        \"body\": \"Booking BK-2610-057 was cancelled at the donor's request\",\n        \"tag\": \"Appointments\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_appointment\",\n        \"ids\": {\n          \"appointment_id\": 417\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-28T01:45:42+00:00\",\n        \"group\": \"earlier\"\n      },\n      {\n        \"id\": \"623d91ed-9393-464b-babd-539aa84e3c45\",\n        \"type\": {\n          \"value\": \"provider_offer_status_changed\",\n          \"label\": \"Offer update\"\n        },\n        \"title\": \"Offer update\",\n        \"body\": \"Offer OFR-2608-001 is now under review\",\n        \"tag\": \"Contact administration\",\n        \"extra_line\": null,\n        \"blood_type\": null,\n        \"screen\": \"provider_offer\",\n        \"ids\": {\n          \"offer_id\": 1\n        },\n        \"is_read\": true,\n        \"created_at\": \"2026-09-27T23:41:42+00:00\",\n        \"group\": \"earlier\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 16,\n      \"last_page\": 2,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"unread_count\": 0,\n      \"total\": 16\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — unread only",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications?unread=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 0,\n      \"last_page\": 1,\n      \"from\": null,\n      \"to\": null\n    },\n    \"meta\": {\n      \"unread_count\": 0,\n      \"total\": 16\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ],
                          "query": [
                            {
                              "key": "unread",
                              "value": "0",
                              "description": "optional · nullable|boolean · غير المقروءة فقط",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · الصفحة",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "unread-count",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"unread_count\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/notifications/unread-count",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "notifications",
                        "unread-count"
                      ]
                    },
                    "description": "## Purpose\nعدد غير المقروء (لوحة البنك).\n\n## Screens\n- P22 Notifications — provider (web) `226:29623`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&scaling=scale-down&content-scaling=fixed)\n- P23 Notifications v02 (غير المقروءة) — provider (web) `226:30147`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&scaling=scale-down&content-scaling=fixed)\n- P24 All Read «جميع الإشعارات مقروءة» — provider (web) `240:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع `unread_count` فقط (خفيف — شارة الهيدر/الويب).\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (provider_* — 16 نوعاً — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/unread-count",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "unread-count"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"unread_count\": 0\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/unread-count",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "unread-count"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/unread-count",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "unread-count"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "read-notification",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"is_read\"); pm.expect(o).to.have.property(\"screen\"); pm.expect(o).to.have.property(\"ids\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/notifications/{id}/read",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "notifications",
                        "{id}",
                        "read"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{notification_id}}",
                          "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                        }
                      ]
                    },
                    "description": "## Purpose\nقراءة إشعار (لوحة البنك).\n\n## Screens\n- P22 Notifications — provider (web) `226:29623`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&scaling=scale-down&content-scaling=fixed)\n- P23 Notifications v02 (غير المقروءة) — provider (web) `226:30147`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&scaling=scale-down&content-scaling=fixed)\n- P24 All Read «جميع الإشعارات مقروءة» — provider (web) `240:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Path params\n- `id` — required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id · example: `9d3c1e6a-0b7f-4a51-8a37-2f5c5b8f1a10`\n\n\n## Behaviour notes\n**Steps:**\n1. يضبط `read_at` للإشعار (idempotent) ويرجع العنصر + `screen` للتنقل.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (provider_* — 16 نوعاً — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.read` → ar «تمت قراءة الإشعار» / en \"Notification marked as read\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |\n| 404 | إشعار غير موجود أو لحساب آخر | `messages.not_found` | العنصر غير موجود | Not found |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}/read",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تمت قراءة الإشعار\",\n  \"data\": {\n    \"id\": \"d38419d0-1b3a-45b6-a80a-e2ddde8e5070\",\n    \"is_read\": true,\n    \"screen\": \"provider_offer\",\n    \"ids\": {\n      \"offer_id\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}/read",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Notification marked as read\",\n  \"data\": {\n    \"id\": \"d38419d0-1b3a-45b6-a80a-e2ddde8e5070\",\n    \"is_read\": true,\n    \"screen\": \"provider_offer\",\n    \"ids\": {\n      \"offer_id\": 1\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}/read",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}/read",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    },
                    {
                      "name": "❌ 404 — إشعار غير موجود أو لحساب آخر",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}/read",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}",
                            "read"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "read-all",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"unread_count\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/notifications/read-all",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "notifications",
                        "read-all"
                      ]
                    },
                    "description": "## Purpose\nتحديد الكل كمقروء (لوحة البنك).\n\n## Screens\n- P22 Notifications — provider (web) `226:29623`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&scaling=scale-down&content-scaling=fixed)\n- P23 Notifications v02 (غير المقروءة) — provider (web) `226:30147`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&scaling=scale-down&content-scaling=fixed)\n- P24 All Read «جميع الإشعارات مقروءة» — provider (web) `240:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. `unreadNotifications()->update(read_at=now)` → يرجع `unread_count: 0`.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (provider_* — 16 نوعاً — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.read_all` → ar «تم تحديد الكل كمقروء» / en \"All notifications marked as read\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/read-all",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "read-all"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديد الكل كمقروء\",\n  \"data\": {\n    \"unread_count\": 0\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/read-all",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "read-all"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"All notifications marked as read\",\n  \"data\": {\n    \"unread_count\": 0\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/read-all",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "read-all"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/read-all",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "read-all"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "delete-notification",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/notifications/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "notifications",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{notification_id}}",
                          "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                        }
                      ]
                    },
                    "description": "## Purpose\nحذف إشعار (لوحة البنك).\n\n## Screens\n- P22 Notifications — provider (web) `226:29623`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&scaling=scale-down&content-scaling=fixed)\n- P23 Notifications v02 (غير المقروءة) — provider (web) `226:30147`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&scaling=scale-down&content-scaling=fixed)\n- P24 All Read «جميع الإشعارات مقروءة» — provider (web) `240:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Path params\n- `id` — required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id · example: `9d3c1e6a-0b7f-4a51-8a37-2f5c5b8f1a10`\n\n\n## Behaviour notes\n**Steps:**\n1. يحذف الإشعار.\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (provider_* — 16 نوعاً — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.deleted` → ar «تم حذف الإشعار» / en \"Notification deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |\n| 404 | إشعار غير موجود أو لحساب آخر | `messages.not_found` | العنصر غير موجود | Not found |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الإشعار\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    },
                    {
                      "name": "❌ 404 — إشعار غير موجود أو لحساب آخر",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{notification_id}}",
                              "description": "required · uuid — notification of the current account · الإشعار · source: GET {{base_url}}provider/notifications → data.data[].id"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    }
                  ]
                },
                {
                  "name": "delete-all-notifications",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/notifications",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "notifications"
                      ]
                    },
                    "description": "## Purpose\nحذف كل الإشعارات (لوحة البنك).\n\n## Screens\n- P22 Notifications — provider (web) `226:29623`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&scaling=scale-down&content-scaling=fixed)\n- P23 Notifications v02 (غير المقروءة) — provider (web) `226:30147`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&scaling=scale-down&content-scaling=fixed)\n- P24 All Read «جميع الإشعارات مقروءة» — provider (web) `240:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يحذف كل إشعارات الحساب (بعد تأكيد في الواجهة).\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (provider_* — 16 نوعاً — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/notifications.deleted_all` → ar «تم حذف كل الإشعارات» / en \"All notifications deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف كل الإشعارات\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"All notifications deleted\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `notifications` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/notifications/unread-count",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"unread_count\"); });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/notifications/unread-count",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "notifications",
                            "unread-count"
                          ]
                        },
                        "description": "## Purpose\nعدّاد الإشعارات غير المقروءة بعد كل أكشن — عدد غير المقروء (لوحة البنك).\n\n## Screens\n- P22 Notifications — provider (web) `226:29623`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-29623&scaling=scale-down&content-scaling=fixed)\n- P23 Notifications v02 (غير المقروءة) — provider (web) `226:30147`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=226-30147&scaling=scale-down&content-scaling=fixed)\n- P24 All Read «جميع الإشعارات مقروءة» — provider (web) `240:2`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=240-2&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع `unread_count` فقط (خفيف — شارة الهيدر/الويب).\n\n**Business rules / constraints:**\n- كل إشعار يُخزن في `database` دائماً، ويُرسل push عبر `DeviceAwareFcmChannel` عند وجود أجهزة (المستخدم فقط لو `is_notify=true`؛ الموظف دائماً).\n- النص بلغة المستلم (`lang`) عند الإرسال؛ القائمة تعرض بلغة الطلب الحالية لأن ar+en مخزّنان.\n- الأنواع: `App\\Enums\\NotificationType` (provider_* — 16 نوعاً — analysis §4.4).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/notifications/unread-count",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "notifications",
                                "unread-count"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"unread_count\": 0\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/notifications/unread-count",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "notifications",
                                "unread-count"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/notifications/unread-count",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "notifications",
                                "unread-count"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "demo/provider/fill/notifications",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                              "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "notifications",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر بيانات تجريبية — يملأ الإشعارات على فرع/جهة الموظف الحالي (`{{employee_token}}`: الحساب الرئيسي = كل الفروع، أو `branch_id`) بكل الحالات من نفس الـ factories والـ services (تعمل فقط مع `DEMO_DATA_ENABLED=true`، وإلا 404). `DELETE demo/provider` يحذفها.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|exists in scope · الفرع"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:20 · "
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text",
                              "description": "optional · nullable|integer|min:1|max:5 · "
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success: notifications (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 404 — قسم غير معروف",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "count",
                                  "value": "99",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}demo/provider/fill/{section}",
                              "host": [
                                "{{base_url}}demo"
                              ],
                              "path": [
                                "provider",
                                "fill",
                                "{section}"
                              ],
                              "variable": [
                                {
                                  "key": "section",
                                  "value": "inventory",
                                  "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                                }
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "type": "text"
                                },
                                {
                                  "key": "count",
                                  "value": "3",
                                  "type": "text"
                                },
                                {
                                  "key": "per_status",
                                  "value": "1",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "lookups",
              "description": "Flow `lookups` — 9 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "sections",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/sections",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "sections"
                      ]
                    },
                    "description": "## Purpose\nمصدر أقسام الصلاحيات في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P79 Add Employee — الصلاحيات (gap P-01) — provider (web) `2095:30908`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30908&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30908&scaling=scale-down&content-scaling=fixed)\n- P80 Edit Employee — provider (web) `2095:31025`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31025&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31025&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\EmployeeSection` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/sections",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "sections"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"home\",\n      \"label\": \"الرئيسية\"\n    },\n    {\n      \"value\": \"appointments\",\n      \"label\": \"المواعيد والحجوزات\"\n    },\n    {\n      \"value\": \"appeals\",\n      \"label\": \"النداءات\"\n    },\n    {\n      \"value\": \"donations\",\n      \"label\": \"متابعة التبرعات\"\n    },\n    {\n      \"value\": \"inventory\",\n      \"label\": \"المخزون\"\n    },\n    {\n      \"value\": \"needs\",\n      \"label\": \"إجمالي الاحتياج\"\n    },\n    {\n      \"value\": \"contact_admin\",\n      \"label\": \"التواصل مع الإدارة\"\n    },\n    {\n      \"value\": \"organization\",\n      \"label\": \"بيانات الجهة\"\n    },\n    {\n      \"value\": \"branches\",\n      \"label\": \"إدارة الفروع\"\n    },\n    {\n      \"value\": \"employees\",\n      \"label\": \"الموظفون\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/sections",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "sections"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"home\",\n      \"label\": \"Home\"\n    },\n    {\n      \"value\": \"appointments\",\n      \"label\": \"Appointments & bookings\"\n    },\n    {\n      \"value\": \"appeals\",\n      \"label\": \"Appeals\"\n    },\n    {\n      \"value\": \"donations\",\n      \"label\": \"Donation tracking\"\n    },\n    {\n      \"value\": \"inventory\",\n      \"label\": \"Inventory\"\n    },\n    {\n      \"value\": \"needs\",\n      \"label\": \"Blood needs\"\n    },\n    {\n      \"value\": \"contact_admin\",\n      \"label\": \"Contact admin\"\n    },\n    {\n      \"value\": \"organization\",\n      \"label\": \"Organization data\"\n    },\n    {\n      \"value\": \"branches\",\n      \"label\": \"Branch management\"\n    },\n    {\n      \"value\": \"employees\",\n      \"label\": \"Employees\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/sections",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "sections"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — forbidden_section (موظف بلا قسم الموظفين)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/sections",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "sections"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branches",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/branches",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "branches"
                      ],
                      "query": [
                        {
                          "key": "include_all",
                          "value": "1",
                          "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                          "disabled": true
                        },
                        {
                          "key": "active",
                          "value": "1",
                          "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nمصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — owner: النشطة فقط",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches?active=1",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — branch employee: فرعه فقط",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (include_all)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "closure-reasons",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/closure-reasons",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "closure-reasons"
                      ]
                    },
                    "description": "## Purpose\nمصدر أسباب الإغلاق في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P87 Add Closure Date (modal) — provider (web) `2095:32957`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32957&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32957&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\ClosureReason` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/closure-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "closure-reasons"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"official_holiday\",\n      \"label\": \"إجازة رسمية\"\n    },\n    {\n      \"value\": \"maintenance\",\n      \"label\": \"صيانة الفرع\"\n    },\n    {\n      \"value\": \"exceptional\",\n      \"label\": \"إغلاق استثنائي\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/closure-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "closure-reasons"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"official_holiday\",\n      \"label\": \"Official holiday\"\n    },\n    {\n      \"value\": \"maintenance\",\n      \"label\": \"Branch maintenance\"\n    },\n    {\n      \"value\": \"exceptional\",\n      \"label\": \"Exceptional closure\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/closure-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "closure-reasons"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/closure-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "closure-reasons"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "need-reasons",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/need-reasons",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "need-reasons"
                      ]
                    },
                    "description": "## Purpose\nمصدر أسباب الاحتياج في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P77 Add Blood Requirement (modal) — provider (web) `779:14416`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\NeedReason` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-reasons"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"low_stock\",\n      \"label\": \"انخفاض المخزون\"\n    },\n    {\n      \"value\": \"patient_case\",\n      \"label\": \"حالة مريض\"\n    },\n    {\n      \"value\": \"surgery\",\n      \"label\": \"عملية جراحية\"\n    },\n    {\n      \"value\": \"expected_demand\",\n      \"label\": \"زيادة متوقعة في الطلب\"\n    },\n    {\n      \"value\": \"other\",\n      \"label\": \"أخرى\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-reasons"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"low_stock\",\n      \"label\": \"Low stock\"\n    },\n    {\n      \"value\": \"patient_case\",\n      \"label\": \"Patient case\"\n    },\n    {\n      \"value\": \"surgery\",\n      \"label\": \"Surgery\"\n    },\n    {\n      \"value\": \"expected_demand\",\n      \"label\": \"Expected demand increase\"\n    },\n    {\n      \"value\": \"other\",\n      \"label\": \"Other\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-reasons"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-reasons"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "need-priorities",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/need-priorities",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "need-priorities"
                      ]
                    },
                    "description": "## Purpose\nمصدر أولويات الاحتياج في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P77 Add Blood Requirement — provider (web) `779:14416`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-14416&scaling=scale-down&content-scaling=fixed)\n- P68 Blood Requirements — فلتر الأولوية — provider (web) `779:9655`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9655&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-9655&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\NeedPriority` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-priorities",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-priorities"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"routine\",\n      \"label\": \"روتيني\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"critical\",\n      \"label\": \"حرج\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-priorities",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-priorities"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"routine\",\n      \"label\": \"Routine\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    {\n      \"value\": \"critical\",\n      \"label\": \"Critical\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-priorities",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-priorities"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/need-priorities",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "need-priorities"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "ticket-types",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/ticket-types",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "ticket-types"
                      ]
                    },
                    "description": "## Purpose\nمصدر أنواع الطلبات في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P53 Submit Complaint or Suggestion — provider (web) `779:5227`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5227&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=779-5227&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\TicketType` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/ticket-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "ticket-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"complaint\",\n      \"label\": \"شكوى\"\n    },\n    {\n      \"value\": \"suggestion\",\n      \"label\": \"مقترح\"\n    },\n    {\n      \"value\": \"inquiry\",\n      \"label\": \"استفسار\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/ticket-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "ticket-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"complaint\",\n      \"label\": \"Complaint\"\n    },\n    {\n      \"value\": \"suggestion\",\n      \"label\": \"Suggestion\"\n    },\n    {\n      \"value\": \"inquiry\",\n      \"label\": \"Inquiry\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/ticket-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "ticket-types"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/ticket-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "ticket-types"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "movement-types",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"color\"); pm.expect(o).to.have.property(\"bg_color\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/movement-types",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "movement-types"
                      ]
                    },
                    "description": "## Purpose\nمصدر أنواع حركات المخزون في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P50 Record Stock Movement — provider (web) `2095:34822`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34822&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-34822&scaling=scale-down&content-scaling=fixed)\n- P49 Blood Inventory — فلتر الحركات — provider (web) `776:3046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=776-3046&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\MovementType` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Business rules / constraints:**\n- `adjustment` يتطلب `direction` (increase|decrease) في الطلب.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/movement-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "movement-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"addition\",\n      \"label\": \"إضافة\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#F0FDF4\"\n    },\n    {\n      \"value\": \"issue\",\n      \"label\": \"صرف\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    {\n      \"value\": \"adjustment\",\n      \"label\": \"تعديل\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/movement-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "movement-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"addition\",\n      \"label\": \"Addition\",\n      \"color\": \"#15803D\",\n      \"bg_color\": \"#F0FDF4\"\n    },\n    {\n      \"value\": \"issue\",\n      \"label\": \"Issue\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    {\n      \"value\": \"adjustment\",\n      \"label\": \"Adjustment\",\n      \"color\": \"#1D4ED8\",\n      \"bg_color\": \"#EFF6FF\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/movement-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "movement-types"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/movement-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "movement-types"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "stop-types",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"stop_types\"); pm.expect(o).to.have.property(\"deferral_types\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/stop-types",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "stop-types"
                      ]
                    },
                    "description": "## Purpose\nمصدر أنواع إيقاف التبرع في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- G-P09 modal إيقاف التبرع (gap P-09) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\StopType + DeferralType` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Business rules / constraints:**\n- `allowed_stages` تحدد أي نوع يظهر حسب مرحلة التبرع الحالية.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/stop-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "stop-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"stop_types\": [\n      {\n        \"value\": \"donor_deferred\",\n        \"label\": \"استبعاد المتبرع\",\n        \"allowed_stages\": [\n          \"initial_screening\"\n        ]\n      },\n      {\n        \"value\": \"unit_rejected\",\n        \"label\": \"رفض الوحدة\",\n        \"allowed_stages\": [\n          \"lab_testing\",\n          \"processing\",\n          \"quality_assurance\",\n          \"storage\"\n        ]\n      }\n    ],\n    \"deferral_types\": [\n      {\n        \"value\": \"temporary\",\n        \"label\": \"مؤقت حتى تاريخ\"\n      },\n      {\n        \"value\": \"permanent\",\n        \"label\": \"دائم\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/stop-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "stop-types"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"stop_types\": [\n      {\n        \"value\": \"donor_deferred\",\n        \"label\": \"Donor deferred\",\n        \"allowed_stages\": [\n          \"initial_screening\"\n        ]\n      },\n      {\n        \"value\": \"unit_rejected\",\n        \"label\": \"Unit rejected\",\n        \"allowed_stages\": [\n          \"lab_testing\",\n          \"processing\",\n          \"quality_assurance\",\n          \"storage\"\n        ]\n      }\n    ],\n    \"deferral_types\": [\n      {\n        \"value\": \"temporary\",\n        \"label\": \"Temporary until date\"\n      },\n      {\n        \"value\": \"permanent\",\n        \"label\": \"Permanent\"\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/stop-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "stop-types"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/stop-types",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "stop-types"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "slot-durations",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/lookups/slot-durations",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "lookups",
                        "slot-durations"
                      ]
                    },
                    "description": "## Purpose\nمصدر مدد الفترات في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P89 Add Branch / Step 3 — مدة الفترة — provider (web) `2095:33273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\SlotDuration` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/slot-durations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "slot-durations"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": 30,\n      \"label\": \"30 دقيقة\"\n    },\n    {\n      \"value\": 60,\n      \"label\": \"60 دقيقة\"\n    },\n    {\n      \"value\": 90,\n      \"label\": \"90 دقيقة\"\n    },\n    {\n      \"value\": 120,\n      \"label\": \"120 دقيقة\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/slot-durations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "slot-durations"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": 30,\n      \"label\": \"30 minutes\"\n    },\n    {\n      \"value\": 60,\n      \"label\": \"60 minutes\"\n    },\n    {\n      \"value\": 90,\n      \"label\": \"90 minutes\"\n    },\n    {\n      \"value\": 120,\n      \"label\": \"120 minutes\"\n    }\n  ]\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/slot-durations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "slot-durations"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/slot-durations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "slot-durations"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `lookups` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "lookups/blood-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"array\", () => pm.expect(pm.response.json().data).to.be.an(\"array\"));",
                              "pm.test(\"value+label\", () => { const i = pm.response.json().data[0]; pm.expect(i).to.have.keys([...Object.keys(i)]); pm.expect(i).to.have.property(\"value\"); pm.expect(i).to.have.property(\"label\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); pm.expect(o).to.have.property(\"is_rare\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/blood-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "blood-types"
                          ]
                        },
                        "description": "## Purpose\nمصدر `blood_type` (فصيلة الدم) — قائمة فصائل الدم — مصدر الـ dropdown/sheet في الشاشات المذكورة.\n\n## Screens\n- U1 فصيلة الدم (sheet) — user app `424:7525`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7525&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user app `1488:2511`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2511&scaling=scale-down&content-scaling=fixed)\n- U18 Account Setup / Blood Type — user web `1490:5405`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-5405&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user app `773:1596`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-1596&scaling=scale-down&content-scaling=fixed)\n- U138 Select Required Blood Type — user web `825:7984`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7984&scaling=scale-down&content-scaling=fixed)\n- P11 Appeals filter — blood type — provider (web) `245:7183`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-7183&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع كل قيم `App\\Enums\\BloodType` بالترتيب المعرّف في الـ enum عبر `BloodType::toValueLabel()` (+ `color`/`bg_color` لو الـ enum ملوّن).\n2. الترجمة من `lang/{ar,en}/enums.php` حسب `Accept-Language` (`api.lang`).\n3. استجابة ثابتة → `Cache::rememberForever` per locale (تُمسح مع `optimize:clear`).\n\n**Business rules / constraints:**\n- `is_rare` = `BloodType::isRare()` (السالبة) — يستخدمها فلتر «الفصائل النادرة» (U124).\n- «لا أعرف» في فورم نداء المستخدم **ليس قيمة enum** — الفرونت يرسل `blood_type` فارغاً (C16).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — English (Accept-Language: en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/blood-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "blood-types"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"A+\",\n      \"label\": \"A+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"A-\",\n      \"label\": \"A-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"B+\",\n      \"label\": \"B+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"B-\",\n      \"label\": \"B-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"AB+\",\n      \"label\": \"AB+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"AB-\",\n      \"label\": \"AB-\",\n      \"is_rare\": true\n    },\n    {\n      \"value\": \"O+\",\n      \"label\": \"O+\",\n      \"is_rare\": false\n    },\n    {\n      \"value\": \"O-\",\n      \"label\": \"O-\",\n      \"is_rare\": true\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "organization",
              "description": "Flow `organization` — 2 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "organization",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"logo\"); pm.expect(o).to.have.property(\"license_no\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"alt_phone\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"address\"); pm.expect(o).to.have.property(\"address_ar\"); pm.expect(o).to.have.property(\"address_en\"); pm.expect(o).to.have.property(\"lat\"); pm.expect(o).to.have.property(\"lng\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"summary\"); pm.expect(o).to.have.property(\"branches_count\"); pm.expect(o).to.have.property(\"branches\"); pm.expect(o).to.have.property(\"can_edit\"); pm.expect(o).to.have.property(\"manage_branches_link\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/organization",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "organization"
                      ]
                    },
                    "description": "## Purpose\nبيانات الجهة وفروعها.\n\n## Screens\n- P26 Organization Details — provider (web) `224:27895`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-27895&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-27895&scaling=scale-down&content-scaling=fixed)\n- P28 Organization / Update Success — provider (web) `224:29013`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-29013&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-29013&scaling=scale-down&content-scaling=fixed)\n- G-P05 رقم الترخيص + الشعار (gap P-05) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:organization`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. `OrganizationResource`: الاسم (ar/en)، الشعار، رقم الترخيص (عرض فقط — يضيفه الأدمن)، الهاتف الرئيسي/البديل، المدينة، العنوان، الموقع، `summary` (الفروع النشطة، أيام العمل، ساعات الفتح — محسوبة من الفروع)، `branches[]` (BR، الاسم، المدينة، العنوان، الأيام، الساعات)، `can_edit` (owner فقط).\n2. C8: بدل «تواصل مع مسؤول المنصة» يرجع `manage_branches_link` (الحساب الرئيسي يدير الفروع).\n3. C9: لا «اسم الفرع» داخل بيانات الجهة؛ يرجع `branches_count` + الفروع.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `organization` (`employee.section:organization`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"organization\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n    \"name_ar\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n    \"name_en\": \"King Faisal Specialist Hospital & Research Centre\",\n    \"logo\": \"http://help.test/uploads/organizations/1.png\",\n    \"license_no\": \"MOH-RYD-0001\",\n    \"phone\": \"0114647272\",\n    \"alt_phone\": \"920002100\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"address\": \"الرياض، المربع، شارع الملك عبد العزيز 11211\",\n    \"address_ar\": \"الرياض، المربع، شارع الملك عبد العزيز 11211\",\n    \"address_en\": \"Riyadh, Al Murabba, King Abdulaziz Road 11211\",\n    \"lat\": 24.6693,\n    \"lng\": 46.6759,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"summary\": {\n      \"active_branches\": 3,\n      \"working_days\": \"السبت – الخميس\",\n      \"opening_hours\": \"07:30 ص – 08:00 م\"\n    },\n    \"branches_count\": 4,\n    \"branches\": [\n      {\n        \"id\": 1,\n        \"code\": \"BR-001\",\n        \"name\": \"الفرع الرئيسي - الرياض\",\n        \"city\": \"الرياض\",\n        \"address\": \"حي العليا، طريق الملك فهد 12713\",\n        \"days\": \"السبت – الخميس\",\n        \"hours\": \"08:00 – 20:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"BR-002\",\n        \"name\": \"فرع جدة\",\n        \"city\": \"جدة\",\n        \"address\": \"حي الروضة، شارع التحلية\",\n        \"days\": \"الأحد – الخميس\",\n        \"hours\": \"07:30 – 17:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"code\": \"BR-003\",\n        \"name\": \"فرع الدمام\",\n        \"city\": \"الدمام\",\n        \"address\": \"حي الشاطئ، طريق الملك فهد\",\n        \"days\": \"الأحد – الخميس\",\n        \"hours\": \"08:00 – 16:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"code\": \"BR-004\",\n        \"name\": \"فرع مكة المكرمة\",\n        \"city\": \"مكة المكرمة\",\n        \"address\": \"حي العزيزية، مكة المكرمة\",\n        \"days\": \"السبت – الخميس\",\n        \"hours\": \"07:00 – 18:00\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"غير نشط\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        }\n      }\n    ],\n    \"can_edit\": true,\n    \"manage_branches_link\": {\n      \"label\": \"إدارة الفروع\",\n      \"endpoint\": \"provider/branches\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n    \"name_ar\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n    \"name_en\": \"King Faisal Specialist Hospital & Research Centre\",\n    \"logo\": \"http://help.test/uploads/organizations/1.png\",\n    \"license_no\": \"MOH-RYD-0001\",\n    \"phone\": \"0114647272\",\n    \"alt_phone\": \"920002100\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"Riyadh\"\n    },\n    \"address\": \"Riyadh, Al Murabba, King Abdulaziz Road 11211\",\n    \"address_ar\": \"الرياض، المربع، شارع الملك عبد العزيز 11211\",\n    \"address_en\": \"Riyadh, Al Murabba, King Abdulaziz Road 11211\",\n    \"lat\": 24.6693,\n    \"lng\": 46.6759,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"summary\": {\n      \"active_branches\": 3,\n      \"working_days\": \"Saturday – Thursday\",\n      \"opening_hours\": \"07:30 AM – 08:00 PM\"\n    },\n    \"branches_count\": 4,\n    \"branches\": [\n      {\n        \"id\": 1,\n        \"code\": \"BR-001\",\n        \"name\": \"Main Branch - Riyadh\",\n        \"city\": \"Riyadh\",\n        \"address\": \"Al Olaya, King Fahd Road 12713\",\n        \"days\": \"Saturday – Thursday\",\n        \"hours\": \"08:00 – 20:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"BR-002\",\n        \"name\": \"Jeddah Branch\",\n        \"city\": \"Jeddah\",\n        \"address\": \"Al Rawdah, Tahlia Street\",\n        \"days\": \"Sunday – Thursday\",\n        \"hours\": \"07:30 – 17:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"code\": \"BR-003\",\n        \"name\": \"Dammam Branch\",\n        \"city\": \"Dammam\",\n        \"address\": \"Al Shati, King Fahd Road\",\n        \"days\": \"Sunday – Thursday\",\n        \"hours\": \"08:00 – 16:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"code\": \"BR-004\",\n        \"name\": \"Makkah Branch\",\n        \"city\": \"Mecca\",\n        \"address\": \"Al Aziziyah, Makkah\",\n        \"days\": \"Saturday – Thursday\",\n        \"hours\": \"07:00 – 18:00\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"Inactive\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        }\n      }\n    ],\n    \"can_edit\": true,\n    \"manage_branches_link\": {\n      \"label\": \"Manage branches\",\n      \"endpoint\": \"provider/branches\"\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم organization (employee.section:organization) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"organization\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                    }
                  ]
                },
                {
                  "name": "update-organization",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"logo\"); pm.expect(o).to.have.property(\"license_no\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"alt_phone\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"address\"); pm.expect(o).to.have.property(\"address_ar\"); pm.expect(o).to.have.property(\"address_en\"); pm.expect(o).to.have.property(\"lat\"); pm.expect(o).to.have.property(\"lng\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"summary\"); pm.expect(o).to.have.property(\"branches_count\"); pm.expect(o).to.have.property(\"branches\"); pm.expect(o).to.have.property(\"can_edit\"); pm.expect(o).to.have.property(\"manage_branches_link\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/organization",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "organization"
                      ]
                    },
                    "description": "## Purpose\nتعديل بيانات الجهة (الحساب الرئيسي).\n\n## Screens\n- P27 Edit Organization (وضع التعديل) — provider (web) `224:28438`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-28438&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-28438&scaling=scale-down&content-scaling=fixed)\n- P28 Update Success toast — provider (web) `224:29013`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-29013&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=224-29013&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:organization` · `employee.owner:organization`\n\n## Parameters & fields\n### Body (form-data)\n- `name[ar]` — required · required|string|max:200 · الاسم عربي · example: `مستشفى الملك فيصل التخصصي ومركز الأبحاث`\n- `name[en]` — required · required|string|max:200 · الاسم إنجليزي · example: `King Faisal Specialist Hospital & Research Centre`\n- `phone` — required · required|string|max:20 · الهاتف الرئيسي · example: `0114647272`\n- `alt_phone` — optional · nullable|string|max:20 · البديل · example: `920002100`\n- `city_id` — required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n- `address[ar]` — required · required|string|max:255 · العنوان التفصيلي · example: `المربع، شارع الملك عبد العزيز 11211`\n- `address[en]` — optional · nullable|string|max:255 (fallback ar) · Address · example: `Al Murabba, King Abdulaziz St`\n- `lat` — optional · nullable|numeric|between:-90,90 · الموقع · example: `24.6741`\n- `lng` — optional · nullable|numeric|between:-180,180 · الموقع · example: `46.6730`\n- `logo` — optional · nullable|image|mimes:jpg,jpeg,png,svg|max:2048 · الشعار · example: `(file)`\n\n\n## Behaviour notes\n**Steps:**\n1. يحدّث الترجمات (name/address ar+en) + الهواتف + المدينة + الموقع + الشعار (multipart).\n2. `license_no` و`is_active` **لا** يعدّلهما البنك (الأدمن فقط).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/organization.updated` → ar «تم تحديث بيانات الجهة بنجاح» / en \"Organization details updated\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (name, phone, city_id, address, logo) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 403 | ليس الحساب الرئيسي | `organization.owner_only` | تعديل بيانات الجهة متاح للحساب الرئيسي فقط | Only the main account can edit the organization |\n| 403 | الموظف لا يملك قسم `organization` (`employee.section:organization`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"organization\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "name[ar]",
                          "value": "مستشفى الملك فيصل التخصصي ومركز الأبحاث",
                          "type": "text",
                          "description": "required · required|string|max:200 · الاسم عربي"
                        },
                        {
                          "key": "name[en]",
                          "value": "King Faisal Specialist Hospital & Research Centre",
                          "type": "text",
                          "description": "required · required|string|max:200 · الاسم إنجليزي"
                        },
                        {
                          "key": "phone",
                          "value": "0114647272",
                          "type": "text",
                          "description": "required · required|string|max:20 · الهاتف الرئيسي"
                        },
                        {
                          "key": "alt_phone",
                          "value": "920002100",
                          "type": "text",
                          "description": "optional · nullable|string|max:20 · البديل"
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities"
                        },
                        {
                          "key": "address[ar]",
                          "value": "المربع، شارع الملك عبد العزيز 11211",
                          "type": "text",
                          "description": "required · required|string|max:255 · العنوان التفصيلي"
                        },
                        {
                          "key": "address[en]",
                          "value": "Al Murabba, King Abdulaziz St",
                          "type": "text",
                          "description": "optional · nullable|string|max:255 (fallback ar) · Address"
                        },
                        {
                          "key": "lat",
                          "value": "24.6741",
                          "type": "text",
                          "description": "optional · nullable|numeric|between:-90,90 · الموقع"
                        },
                        {
                          "key": "lng",
                          "value": "46.673",
                          "type": "text",
                          "description": "optional · nullable|numeric|between:-180,180 · الموقع"
                        },
                        {
                          "key": "logo",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png,svg|max:2048 · الشعار"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "مستشفى الملك فيصل التخصصي ومركز الأبحاث",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "King Faisal Specialist Hospital & Research Centre",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0114647272",
                              "type": "text"
                            },
                            {
                              "key": "alt_phone",
                              "value": "920002100",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "المربع، شارع الملك عبد العزيز 11211",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Murabba, King Abdulaziz St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "24.6741",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "46.673",
                              "type": "text"
                            },
                            {
                              "key": "logo",
                              "value": "(file)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث بيانات الجهة بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n    \"name_ar\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n    \"name_en\": \"King Faisal Specialist Hospital & Research Centre\",\n    \"logo\": \"http://help.test/uploads/organizations/photo.png\",\n    \"license_no\": \"MOH-RYD-0001\",\n    \"phone\": \"0114647272\",\n    \"alt_phone\": \"920002100\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"address\": \"المربع، شارع الملك عبد العزيز 11211\",\n    \"address_ar\": \"المربع، شارع الملك عبد العزيز 11211\",\n    \"address_en\": \"Al Murabba, King Abdulaziz St\",\n    \"lat\": 24.6741,\n    \"lng\": 46.673,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"summary\": {\n      \"active_branches\": 3,\n      \"working_days\": \"السبت – الخميس\",\n      \"opening_hours\": \"07:30 ص – 08:00 م\"\n    },\n    \"branches_count\": 4,\n    \"branches\": [\n      {\n        \"id\": 1,\n        \"code\": \"BR-001\",\n        \"name\": \"الفرع الرئيسي - الرياض\",\n        \"city\": \"الرياض\",\n        \"address\": \"حي العليا، طريق الملك فهد 12713\",\n        \"days\": \"السبت – الخميس\",\n        \"hours\": \"08:00 – 20:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"BR-002\",\n        \"name\": \"فرع جدة\",\n        \"city\": \"جدة\",\n        \"address\": \"حي الروضة، شارع التحلية\",\n        \"days\": \"الأحد – الخميس\",\n        \"hours\": \"07:30 – 17:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"code\": \"BR-003\",\n        \"name\": \"فرع الدمام\",\n        \"city\": \"الدمام\",\n        \"address\": \"حي الشاطئ، طريق الملك فهد\",\n        \"days\": \"الأحد – الخميس\",\n        \"hours\": \"08:00 – 16:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"code\": \"BR-004\",\n        \"name\": \"فرع مكة المكرمة\",\n        \"city\": \"مكة المكرمة\",\n        \"address\": \"حي العزيزية، مكة المكرمة\",\n        \"days\": \"السبت – الخميس\",\n        \"hours\": \"07:00 – 18:00\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"غير نشط\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        }\n      }\n    ],\n    \"can_edit\": true,\n    \"manage_branches_link\": {\n      \"label\": \"إدارة الفروع\",\n      \"endpoint\": \"provider/branches\"\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "مستشفى الملك فيصل التخصصي ومركز الأبحاث",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "King Faisal Specialist Hospital & Research Centre",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0114647272",
                              "type": "text"
                            },
                            {
                              "key": "alt_phone",
                              "value": "920002100",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "المربع، شارع الملك عبد العزيز 11211",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Murabba, King Abdulaziz St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "24.6741",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "46.673",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Organization details updated\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n    \"name_ar\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n    \"name_en\": \"King Faisal Specialist Hospital & Research Centre\",\n    \"logo\": \"http://help.test/uploads/organizations/photo.png\",\n    \"license_no\": \"MOH-RYD-0001\",\n    \"phone\": \"0114647272\",\n    \"alt_phone\": \"920002100\",\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"Riyadh\"\n    },\n    \"address\": \"Al Murabba, King Abdulaziz St\",\n    \"address_ar\": \"المربع، شارع الملك عبد العزيز 11211\",\n    \"address_en\": \"Al Murabba, King Abdulaziz St\",\n    \"lat\": 24.6741,\n    \"lng\": 46.673,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"summary\": {\n      \"active_branches\": 3,\n      \"working_days\": \"Saturday – Thursday\",\n      \"opening_hours\": \"07:30 AM – 08:00 PM\"\n    },\n    \"branches_count\": 4,\n    \"branches\": [\n      {\n        \"id\": 1,\n        \"code\": \"BR-001\",\n        \"name\": \"Main Branch - Riyadh\",\n        \"city\": \"Riyadh\",\n        \"address\": \"Al Olaya, King Fahd Road 12713\",\n        \"days\": \"Saturday – Thursday\",\n        \"hours\": \"08:00 – 20:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"code\": \"BR-002\",\n        \"name\": \"Jeddah Branch\",\n        \"city\": \"Jeddah\",\n        \"address\": \"Al Rawdah, Tahlia Street\",\n        \"days\": \"Sunday – Thursday\",\n        \"hours\": \"07:30 – 17:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"code\": \"BR-003\",\n        \"name\": \"Dammam Branch\",\n        \"city\": \"Dammam\",\n        \"address\": \"Al Shati, King Fahd Road\",\n        \"days\": \"Sunday – Thursday\",\n        \"hours\": \"08:00 – 16:00\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"code\": \"BR-004\",\n        \"name\": \"Makkah Branch\",\n        \"city\": \"Mecca\",\n        \"address\": \"Al Aziziyah, Makkah\",\n        \"days\": \"Saturday – Thursday\",\n        \"hours\": \"07:00 – 18:00\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"Inactive\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        }\n      }\n    ],\n    \"can_edit\": true,\n    \"manage_branches_link\": {\n      \"label\": \"Manage branches\",\n      \"endpoint\": \"provider/branches\"\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (name, phone, city_id, address, logo)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "city_id",
                              "value": "999999",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل الاسم مطلوب. (and 6 more errors)\",\n  \"errors\": {\n    \"name\": [\n      \"الحقل الاسم مطلوب.\"\n    ],\n    \"name.ar\": [\n      \"الحقل الاسم بالعربية مطلوب.\"\n    ],\n    \"name.en\": [\n      \"الحقل الاسم بالانجليزية مطلوب.\"\n    ],\n    \"phone\": [\n      \"الحقل الهاتف مطلوب.\"\n    ],\n    \"city_id\": [\n      \"حقل المحدد المدينة غير صالح.\"\n    ],\n    \"address\": [\n      \"الحقل العنوان مطلوب.\"\n    ],\n    \"address.ar\": [\n      \"الحقل address.ar مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — ليس الحساب الرئيسي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "مستشفى الملك فيصل التخصصي ومركز الأبحاث",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "King Faisal Specialist Hospital & Research Centre",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0114647272",
                              "type": "text"
                            },
                            {
                              "key": "alt_phone",
                              "value": "920002100",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "المربع، شارع الملك عبد العزيز 11211",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Murabba, King Abdulaziz St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "24.6741",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "46.673",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تعديل بيانات الجهة متاح للحساب الرئيسي فقط\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم organization (employee.section:organization) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "مستشفى الملك فيصل التخصصي ومركز الأبحاث",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "King Faisal Specialist Hospital & Research Centre",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0114647272",
                              "type": "text"
                            },
                            {
                              "key": "alt_phone",
                              "value": "920002100",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "المربع، شارع الملك عبد العزيز 11211",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Murabba, King Abdulaziz St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "24.6741",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "46.673",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"organization\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/organization",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "organization"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "مستشفى الملك فيصل التخصصي ومركز الأبحاث",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "King Faisal Specialist Hospital & Research Centre",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0114647272",
                              "type": "text"
                            },
                            {
                              "key": "alt_phone",
                              "value": "920002100",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "المربع، شارع الملك عبد العزيز 11211",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Murabba, King Abdulaziz St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "24.6741",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "46.673",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `organization` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "employees",
              "description": "Flow `employees` — 6 endpoints (sprint 2). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "employees",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"rows\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"pagination\", () => { pm.expect(pm.response.json().data).to.have.property(\"pagination\"); pm.expect(pm.response.json().data.data).to.be.an(\"array\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/employees",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "employees"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "2",
                          "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                          "disabled": true
                        },
                        {
                          "key": "status",
                          "value": "active",
                          "description": "optional · nullable|in:active,inactive · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "سارة",
                          "description": "optional · nullable|string|max:100 · بحث",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة الموظفين وعداداتها.\n\n## Screens\n- P78 Employee Management — provider (web) `2095:30046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30046&scaling=scale-down&content-scaling=fixed)\n- G-P04 رقم EMP- تحت الاسم (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- G-P19 تفعيل/تعطيل (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `2`\n- `status` — optional · nullable|in:active,inactive · الحالة · example: `active`\n- `search` — optional · nullable|string|max:100 · بحث · example: `سارة`\n- `page` — optional · nullable|integer|min:1 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. موظفو جهتي (owner) أو فرعي، بدون الحساب الرئيسي نفسه في الحذف/التعطيل (يظهر بوسم).\n2. فلاتر `branch_id`, `status` (active|inactive), `search` (الاسم/الجوال/البريد/EMP).\n3. `meta.counters`: الفروع التي تضم موظفين 3، النشطون 12، غير النشطين 2، الإجمالي 14.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id, status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `employees` (`employee.section:employees`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"employees\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "2",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"employee_no\": \"EMP-00001\",\n        \"name\": \"أحمد محمد العمري\",\n        \"job_title\": \"منسق بنك الدم\",\n        \"email\": \"a.alomari@kfshrc.edu.sa\",\n        \"phone\": \"501234567\",\n        \"branch\": null,\n        \"created_at\": \"2021-03-01\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": true,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/1\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/1/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/1\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"employee_no\": \"EMP-00002\",\n        \"name\": \"أحمد محمد العتيبي\",\n        \"job_title\": \"موظف استقبال\",\n        \"email\": \"a.alotaibi@kfshrc.edu.sa\",\n        \"phone\": \"502000002\",\n        \"branch\": {\n          \"id\": 2,\n          \"code\": \"BR-002\",\n          \"name\": \"فرع جدة\"\n        },\n        \"created_at\": \"2021-03-08\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/2\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/2/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/2\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"employee_no\": \"EMP-00003\",\n        \"name\": \"سارة خالد الشهراني\",\n        \"job_title\": \"ممرضة\",\n        \"email\": \"s.alshahrani@kfshrc.edu.sa\",\n        \"phone\": \"502000003\",\n        \"branch\": {\n          \"id\": 2,\n          \"code\": \"BR-002\",\n          \"name\": \"فرع جدة\"\n        },\n        \"created_at\": \"2021-03-11\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/3\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/3/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/3\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"employee_no\": \"EMP-00004\",\n        \"name\": \"محمد عبدالله القحطاني\",\n        \"job_title\": \"فني مختبر\",\n        \"email\": \"m.alqahtani@kfshrc.edu.sa\",\n        \"phone\": \"502000004\",\n        \"branch\": {\n          \"id\": 3,\n          \"code\": \"BR-003\",\n          \"name\": \"فرع الدمام\"\n        },\n        \"created_at\": \"2021-03-14\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"غير نشط\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/4\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تفعيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/4/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/4\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"employee_no\": \"EMP-00005\",\n        \"name\": \"نورة علي الحربي\",\n        \"job_title\": \"موظف إداري\",\n        \"email\": \"n.alharbi@kfshrc.edu.sa\",\n        \"phone\": \"502000005\",\n        \"branch\": {\n          \"id\": 4,\n          \"code\": \"BR-004\",\n          \"name\": \"فرع مكة المكرمة\"\n        },\n        \"created_at\": \"2021-03-17\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/5\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/5/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/5\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"employee_no\": \"EMP-00006\",\n        \"name\": \"خالد فهد السبيعي\",\n        \"job_title\": \"مشرف التبرعات\",\n        \"email\": \"k.alsubaie@kfshrc.edu.sa\",\n        \"phone\": \"502000006\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"الفرع الرئيسي - الرياض\"\n        },\n        \"created_at\": \"2021-03-20\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/6\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/6/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/6\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"employee_no\": \"EMP-00007\",\n        \"name\": \"عبدالرحمن سعد الدوسري\",\n        \"job_title\": \"سائق إسعاف\",\n        \"email\": \"a.aldosari@kfshrc.edu.sa\",\n        \"phone\": \"502000007\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"الفرع الرئيسي - الرياض\"\n        },\n        \"created_at\": \"2021-03-23\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/7\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/7/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/7\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"employee_no\": \"EMP-00008\",\n        \"name\": \"ريم ناصر القرني\",\n        \"job_title\": \"موظف تسجيل\",\n        \"email\": \"r.alqarni@kfshrc.edu.sa\",\n        \"phone\": \"502000008\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"الفرع الرئيسي - الرياض\"\n        },\n        \"created_at\": \"2021-03-26\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/8\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/8/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/8\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"employee_no\": \"EMP-00009\",\n        \"name\": \"فيصل تركي المالكي\",\n        \"job_title\": \"أمين مخزن الدم\",\n        \"email\": \"f.almalki@kfshrc.edu.sa\",\n        \"phone\": \"502000009\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"الفرع الرئيسي - الرياض\"\n        },\n        \"created_at\": \"2021-03-29\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/9\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/9/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/9\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 10,\n        \"employee_no\": \"EMP-00010\",\n        \"name\": \"هند صالح الزهراني\",\n        \"job_title\": \"منسقة العلاقات\",\n        \"email\": \"h.alzahrani@kfshrc.edu.sa\",\n        \"phone\": \"502000010\",\n        \"branch\": {\n          \"id\": 2,\n          \"code\": \"BR-002\",\n          \"name\": \"فرع جدة\"\n        },\n        \"created_at\": \"2021-04-01\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/10\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/10/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/10\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 11,\n        \"employee_no\": \"EMP-00011\",\n        \"name\": \"ماجد حسن الشمري\",\n        \"job_title\": \"منسق نداءات\",\n        \"email\": \"m.alshammari@kfshrc.edu.sa\",\n        \"phone\": \"502000011\",\n        \"branch\": {\n          \"id\": 3,\n          \"code\": \"BR-003\",\n          \"name\": \"فرع الدمام\"\n        },\n        \"created_at\": \"2021-04-04\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/11\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/11/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/11\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 12,\n        \"employee_no\": \"EMP-00012\",\n        \"name\": \"لمى عادل الغامدي\",\n        \"job_title\": \"ممرضة مختبر\",\n        \"email\": \"l.alghamdi@kfshrc.edu.sa\",\n        \"phone\": \"502000012\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"الفرع الرئيسي - الرياض\"\n        },\n        \"created_at\": \"2021-04-07\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/12\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/12/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/12\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 13,\n        \"employee_no\": \"EMP-00013\",\n        \"name\": \"سلطان بندر العتيبي\",\n        \"job_title\": \"اختصاصي مختبر\",\n        \"email\": \"s.alotaibi@kfshrc.edu.sa\",\n        \"phone\": \"502000013\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"الفرع الرئيسي - الرياض\"\n        },\n        \"created_at\": \"2021-04-10\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/13\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/13/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/13\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 14,\n        \"employee_no\": \"EMP-00014\",\n        \"name\": \"أسماء ماجد الرشيد\",\n        \"job_title\": \"منسقة تبرعات\",\n        \"email\": \"a.alrashid@kfshrc.edu.sa\",\n        \"phone\": \"502000014\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"الفرع الرئيسي - الرياض\"\n        },\n        \"created_at\": \"2021-04-13\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/14\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/14/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/14\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"employee_no\": \"EMP-00015\",\n        \"name\": \"يوسف كمال الأنصاري\",\n        \"job_title\": \"موظف تقنية معلومات\",\n        \"email\": \"y.alansari@kfshrc.edu.sa\",\n        \"phone\": \"502000015\",\n        \"branch\": {\n          \"id\": 3,\n          \"code\": \"BR-003\",\n          \"name\": \"فرع الدمام\"\n        },\n        \"created_at\": \"2021-04-16\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"غير نشط\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تفعيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/15/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/15\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 15,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"counters\": {\n        \"branches\": 4,\n        \"active\": 13,\n        \"inactive\": 2,\n        \"total\": 15\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "2",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"employee_no\": \"EMP-00001\",\n        \"name\": \"أحمد محمد العمري\",\n        \"job_title\": \"منسق بنك الدم\",\n        \"email\": \"a.alomari@kfshrc.edu.sa\",\n        \"phone\": \"501234567\",\n        \"branch\": null,\n        \"created_at\": \"2021-03-01\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": true,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/1\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/1/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/1\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": false\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"employee_no\": \"EMP-00002\",\n        \"name\": \"أحمد محمد العتيبي\",\n        \"job_title\": \"موظف استقبال\",\n        \"email\": \"a.alotaibi@kfshrc.edu.sa\",\n        \"phone\": \"502000002\",\n        \"branch\": {\n          \"id\": 2,\n          \"code\": \"BR-002\",\n          \"name\": \"Jeddah Branch\"\n        },\n        \"created_at\": \"2021-03-08\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/2\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/2/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/2\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"employee_no\": \"EMP-00003\",\n        \"name\": \"سارة خالد الشهراني\",\n        \"job_title\": \"ممرضة\",\n        \"email\": \"s.alshahrani@kfshrc.edu.sa\",\n        \"phone\": \"502000003\",\n        \"branch\": {\n          \"id\": 2,\n          \"code\": \"BR-002\",\n          \"name\": \"Jeddah Branch\"\n        },\n        \"created_at\": \"2021-03-11\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/3\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/3/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/3\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"employee_no\": \"EMP-00004\",\n        \"name\": \"محمد عبدالله القحطاني\",\n        \"job_title\": \"فني مختبر\",\n        \"email\": \"m.alqahtani@kfshrc.edu.sa\",\n        \"phone\": \"502000004\",\n        \"branch\": {\n          \"id\": 3,\n          \"code\": \"BR-003\",\n          \"name\": \"Dammam Branch\"\n        },\n        \"created_at\": \"2021-03-14\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"Inactive\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/4\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Activate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/4/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/4\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 5,\n        \"employee_no\": \"EMP-00005\",\n        \"name\": \"نورة علي الحربي\",\n        \"job_title\": \"موظف إداري\",\n        \"email\": \"n.alharbi@kfshrc.edu.sa\",\n        \"phone\": \"502000005\",\n        \"branch\": {\n          \"id\": 4,\n          \"code\": \"BR-004\",\n          \"name\": \"Makkah Branch\"\n        },\n        \"created_at\": \"2021-03-17\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/5\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/5/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/5\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 6,\n        \"employee_no\": \"EMP-00006\",\n        \"name\": \"خالد فهد السبيعي\",\n        \"job_title\": \"مشرف التبرعات\",\n        \"email\": \"k.alsubaie@kfshrc.edu.sa\",\n        \"phone\": \"502000006\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"Main Branch - Riyadh\"\n        },\n        \"created_at\": \"2021-03-20\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/6\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/6/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/6\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 7,\n        \"employee_no\": \"EMP-00007\",\n        \"name\": \"عبدالرحمن سعد الدوسري\",\n        \"job_title\": \"سائق إسعاف\",\n        \"email\": \"a.aldosari@kfshrc.edu.sa\",\n        \"phone\": \"502000007\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"Main Branch - Riyadh\"\n        },\n        \"created_at\": \"2021-03-23\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/7\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/7/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/7\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 8,\n        \"employee_no\": \"EMP-00008\",\n        \"name\": \"ريم ناصر القرني\",\n        \"job_title\": \"موظف تسجيل\",\n        \"email\": \"r.alqarni@kfshrc.edu.sa\",\n        \"phone\": \"502000008\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"Main Branch - Riyadh\"\n        },\n        \"created_at\": \"2021-03-26\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/8\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/8/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/8\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 9,\n        \"employee_no\": \"EMP-00009\",\n        \"name\": \"فيصل تركي المالكي\",\n        \"job_title\": \"أمين مخزن الدم\",\n        \"email\": \"f.almalki@kfshrc.edu.sa\",\n        \"phone\": \"502000009\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"Main Branch - Riyadh\"\n        },\n        \"created_at\": \"2021-03-29\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/9\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/9/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/9\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 10,\n        \"employee_no\": \"EMP-00010\",\n        \"name\": \"هند صالح الزهراني\",\n        \"job_title\": \"منسقة العلاقات\",\n        \"email\": \"h.alzahrani@kfshrc.edu.sa\",\n        \"phone\": \"502000010\",\n        \"branch\": {\n          \"id\": 2,\n          \"code\": \"BR-002\",\n          \"name\": \"Jeddah Branch\"\n        },\n        \"created_at\": \"2021-04-01\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/10\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/10/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/10\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 11,\n        \"employee_no\": \"EMP-00011\",\n        \"name\": \"ماجد حسن الشمري\",\n        \"job_title\": \"منسق نداءات\",\n        \"email\": \"m.alshammari@kfshrc.edu.sa\",\n        \"phone\": \"502000011\",\n        \"branch\": {\n          \"id\": 3,\n          \"code\": \"BR-003\",\n          \"name\": \"Dammam Branch\"\n        },\n        \"created_at\": \"2021-04-04\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/11\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/11/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/11\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 12,\n        \"employee_no\": \"EMP-00012\",\n        \"name\": \"لمى عادل الغامدي\",\n        \"job_title\": \"ممرضة مختبر\",\n        \"email\": \"l.alghamdi@kfshrc.edu.sa\",\n        \"phone\": \"502000012\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"Main Branch - Riyadh\"\n        },\n        \"created_at\": \"2021-04-07\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/12\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/12/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/12\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 13,\n        \"employee_no\": \"EMP-00013\",\n        \"name\": \"سلطان بندر العتيبي\",\n        \"job_title\": \"اختصاصي مختبر\",\n        \"email\": \"s.alotaibi@kfshrc.edu.sa\",\n        \"phone\": \"502000013\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"Main Branch - Riyadh\"\n        },\n        \"created_at\": \"2021-04-10\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/1.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/13\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/13/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/13\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 14,\n        \"employee_no\": \"EMP-00014\",\n        \"name\": \"أسماء ماجد الرشيد\",\n        \"job_title\": \"منسقة تبرعات\",\n        \"email\": \"a.alrashid@kfshrc.edu.sa\",\n        \"phone\": \"502000014\",\n        \"branch\": {\n          \"id\": 1,\n          \"code\": \"BR-001\",\n          \"name\": \"Main Branch - Riyadh\"\n        },\n        \"created_at\": \"2021-04-13\",\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/2.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/14\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/14/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/14\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 15,\n        \"employee_no\": \"EMP-00015\",\n        \"name\": \"يوسف كمال الأنصاري\",\n        \"job_title\": \"موظف تقنية معلومات\",\n        \"email\": \"y.alansari@kfshrc.edu.sa\",\n        \"phone\": \"502000015\",\n        \"branch\": {\n          \"id\": 3,\n          \"code\": \"BR-003\",\n          \"name\": \"Dammam Branch\"\n        },\n        \"created_at\": \"2021-04-16\",\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"Inactive\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"avatar\": \"http://help.test/uploads/employees/3.png\",\n        \"is_owner\": false,\n        \"action_buttons\": [\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/15\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Activate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/employees/15/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/employees/15\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 15,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 15\n    },\n    \"meta\": {\n      \"counters\": {\n        \"branches\": 4,\n        \"active\": 13,\n        \"inactive\": 2,\n        \"total\": 15\n      }\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (branch_id, status)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees?branch_id=99999&status=nope",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "2",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح. (and 1 more error)\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ],\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "2",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم employees (employee.section:employees) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "2",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "2",
                              "description": "optional · nullable|exists:branches,id (in scope) · الفرع · source: GET {{base_url}}provider/lookups/branches",
                              "disabled": true
                            },
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "سارة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "create-employee",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "const digits = (n) => String(Math.floor(Math.random() * Math.pow(10, n))).padStart(n, \"0\"); const phone = \"05\" + digits(8); const email = \"qa\" + digits(8) + \"@example.com\"; pm.collectionVariables.set(\"emp_phone\", phone); pm.environment.set(\"emp_phone\", phone); pm.collectionVariables.set(\"emp_email\", email); pm.environment.set(\"emp_email\", email);",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_login_at\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "{ const v = pm.response.json().data.id; if (v) { pm.collectionVariables.set(\"provider_employee_id\", v); pm.environment.set(\"provider_employee_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/employees",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "employees"
                      ]
                    },
                    "description": "## Purpose\nإضافة موظف بصلاحيات أقسام.\n\n## Screens\n- P79 Add Employee (modal) — provider (web) `2095:30908`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30908&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30908&scaling=scale-down&content-scaling=fixed)\n- G-P01 الصلاحيات + «تحديد الكل» (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- G-P03 المسمى الوظيفي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n### Body (form-data)\n- `avatar` — optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة (JPG/PNG ≤2MB) · example: `(file)`\n- `name` — required · required|string|max:150 · اسم الموظف · example: `سارة خالد الشهراني`\n- `job_title` — required · required|string|max:100 · المسمى الوظيفي (gap P-03) · example: `ممرضة`\n- `country_code` — required · required|exists:countries,code · مفتاح الدولة · example: `966`\n- `phone` — required · required|PhoneNormalizer|regex:/^5\\d{8}$/|unique:employees,phone (whereNull deleted_at) · الجوال (فريد على مستوى المنصة) · example: `0503456789`\n- `email` — required · required|email|max:150|unique:employees,email (whereNull deleted_at) · البريد · example: `s.shahrani@kfshrc.edu.sa`\n- `password` — required · required|string|min:8|confirmed · كلمة المرور · example: `Password@123`\n- `password_confirmation` — required · same:password · تأكيد كلمة المرور · example: `Password@123`\n- `is_active` — required · required|boolean · حالة الحساب · example: `1`\n- `branch_id` — required · required|exists:branches,id (in my organization, whereNull deleted_at) · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `2`\n- `sections[]` — required · required|array|min:1; sections.* = Rule::enum(EmployeeSection::class)|distinct · الصلاحيات (gap P-01 — «تحديد الكل») · source: GET {{base_url}}provider/lookups/sections · example: `appointments`\n\n\n## Behaviour notes\n**Steps:**\n1. ينشئ `employees` (`organization_id` = جهتي، `employee_no` EMP- عبر Observer، `is_owner=false`، password hashed cast) + `employee_permissions` (sync `sections[]`).\n2. الصورة اختيارية (`FILES`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- `ActivityLogger` n/a (API); `EmployeePermission` rows written via relation `createMany`.\n\n> Postman: the pre-request generates a random phone / e-mail; the next steps (show, update, toggle, destroy) work on the employee created here.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/employee.created` → ar «تمت إضافة الموظف بنجاح» / en \"Employee added successfully\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (name, job_title, phone (unique), email (unique), password, branch_id, sections) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `employees` (`employee.section:employees`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"employees\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "avatar",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة (JPG/PNG ≤2MB)"
                        },
                        {
                          "key": "name",
                          "value": "سارة خالد الشهراني",
                          "type": "text",
                          "description": "required · required|string|max:150 · اسم الموظف"
                        },
                        {
                          "key": "job_title",
                          "value": "ممرضة",
                          "type": "text",
                          "description": "required · required|string|max:100 · المسمى الوظيفي (gap P-03)"
                        },
                        {
                          "key": "country_code",
                          "value": "966",
                          "type": "text",
                          "description": "required · required|exists:countries,code · مفتاح الدولة"
                        },
                        {
                          "key": "phone",
                          "value": "{{emp_phone}}",
                          "type": "text",
                          "description": "required · required|PhoneNormalizer|regex:/^5\\d{8}$/|unique:employees,phone (whereNull deleted_at) · الجوال (فريد على مستوى المنصة)"
                        },
                        {
                          "key": "email",
                          "value": "{{emp_email}}",
                          "type": "text",
                          "description": "required · required|email|max:150|unique:employees,email (whereNull deleted_at) · البريد"
                        },
                        {
                          "key": "password",
                          "value": "Password@123",
                          "type": "text",
                          "description": "required · required|string|min:8|confirmed · كلمة المرور"
                        },
                        {
                          "key": "password_confirmation",
                          "value": "Password@123",
                          "type": "text",
                          "description": "required · same:password · تأكيد كلمة المرور"
                        },
                        {
                          "key": "is_active",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · حالة الحساب"
                        },
                        {
                          "key": "branch_id",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|exists:branches,id (in my organization, whereNull deleted_at) · الفرع · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "sections[0]",
                          "value": "appointments",
                          "type": "text",
                          "description": "required · required|array|min:1; sections.* = Rule::enum(EmployeeSection::class)|distinct · الصلاحيات (gap P-01 — «تحديد الكل») · source: GET {{base_url}}provider/lookups/sections"
                        },
                        {
                          "key": "sections[1]",
                          "value": "donations",
                          "type": "text",
                          "description": "required · required|array|min:1; sections.* = Rule::enum(EmployeeSection::class)|distinct · الصلاحيات (gap P-01 — «تحديد الكل») · source: GET {{base_url}}provider/lookups/sections"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            },
                            {
                              "key": "avatar",
                              "value": "(file)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تمت إضافة الموظف بنجاح\",\n  \"data\": {\n    \"id\": 26,\n    \"employee_no\": \"EMP-00026\",\n    \"name\": \"سارة خالد الشهراني\",\n    \"job_title\": \"ممرضة\",\n    \"country_code\": \"966\",\n    \"phone\": \"503456789\",\n    \"email\": \"s.shahrani@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/photo.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2026-10-18\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/photo.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"last_login_at\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تعطيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "خالد عبدالله القحطاني",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456790",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "k.qahtani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Employee added successfully\",\n  \"data\": {\n    \"id\": 27,\n    \"employee_no\": \"EMP-00027\",\n    \"name\": \"خالد عبدالله القحطاني\",\n    \"job_title\": \"ممرضة\",\n    \"country_code\": \"966\",\n    \"phone\": \"503456790\",\n    \"email\": \"k.qahtani@kfshrc.edu.sa\",\n    \"avatar\": null,\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2026-10-18\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/photo.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"Jeddah Branch\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"last_login_at\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/27\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/27/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/27\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (name, job_title, phone (unique), email (unique), password, branch_id, sections)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "a.alomari@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "short",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "99999",
                              "type": "text"
                            },
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"قيمة الحقل الهاتف مُستخدمة من قبل (and 6 more errors)\",\n  \"errors\": {\n    \"phone\": [\n      \"قيمة الحقل الهاتف مُستخدمة من قبل\"\n    ],\n    \"email\": [\n      \"قيمة الحقل البريد الالكتروني مُستخدمة من قبل\"\n    ],\n    \"password\": [\n      \"يجب أن يكون طول نص كلمة المرور على الأقل 8 حروفٍ/حرفًا\",\n      \"حقل التأكيد غير مُطابق للحقل كلمة المرور\"\n    ],\n    \"password_confirmation\": [\n      \"يجب أن يتطابق الحقل تأكيد كلمة المرور مع كلمة المرور\"\n    ],\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ],\n    \"sections\": [\n      \"الحقل sections مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم employees (employee.section:employees) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "password",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "password_confirmation",
                              "value": "Password@123",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "employee-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_login_at\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/employees/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "employees",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_employee_id}}",
                          "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل موظف وصلاحياته.\n\n## Screens\n- P81 Employee Details — provider (web) `2239:1013`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2239-1013&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2239-1013&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n### Path params\n- `id` — required · employee in scope · الموظف · source: GET {{base_url}}provider/employees · example: `2`\n\n\n## Behaviour notes\n**Steps:**\n1. `EmployeeResource` + `permissions[]` (chips) + `action_buttons` (`edit`, `toggle_status`, `delete` — الأخيران `is_available=false` للـ owner).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | موظف خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `employees` (`employee.section:employees`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"employees\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 26,\n    \"employee_no\": \"EMP-00026\",\n    \"name\": \"سارة خالد الشهراني\",\n    \"job_title\": \"ممرضة\",\n    \"country_code\": \"966\",\n    \"phone\": \"503456789\",\n    \"email\": \"s.shahrani@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/photo.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2026-10-18\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/photo.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"last_login_at\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تعطيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 26,\n    \"employee_no\": \"EMP-00026\",\n    \"name\": \"سارة خالد الشهراني\",\n    \"job_title\": \"ممرضة\",\n    \"country_code\": \"966\",\n    \"phone\": \"503456789\",\n    \"email\": \"s.shahrani@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/photo.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2026-10-18\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/photo.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"Jeddah Branch\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"last_login_at\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — موظف خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم employees (employee.section:employees) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "update-employee",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"last_login_at\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/employees/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "employees",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_employee_id}}",
                          "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعديل موظف وصلاحياته.\n\n## Screens\n- P80 Edit Employee (modal) — provider (web) `2095:31025`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31025&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31025&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n### Path params\n- `id` — required · employee in scope · الموظف · source: GET {{base_url}}provider/employees · example: `2`\n\n### Body (form-data)\n- `_method` — required · PUT · method spoofing · example: `PUT`\n- `avatar` — optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة (JPG/PNG ≤2MB) · example: `(file)`\n- `name` — required · required|string|max:150 · اسم الموظف · example: `سارة خالد الشهراني`\n- `job_title` — required · required|string|max:100 · المسمى الوظيفي (gap P-03) · example: `ممرضة`\n- `country_code` — required · required|exists:countries,code · مفتاح الدولة · example: `966`\n- `phone` — required · required|PhoneNormalizer|regex:/^5\\d{8}$/|unique:employees,phone,{id} (whereNull deleted_at) · الجوال (فريد على مستوى المنصة) · example: `0503456789`\n- `email` — required · required|email|max:150|unique:employees,email,{id} (whereNull deleted_at) · البريد · example: `s.shahrani@kfshrc.edu.sa`\n- `password` — optional · nullable|string|min:8|confirmed · كلمة مرور جديدة (اختياري) · example: `Password@123`\n- `password_confirmation` — with password · same:password · تأكيد كلمة المرور · example: `Password@123`\n- `is_active` — required · required|boolean · حالة الحساب · example: `1`\n- `branch_id` — required · required|exists:branches,id (in my organization, whereNull deleted_at) · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `2`\n- `sections[]` — required · required|array|min:1; sections.* = Rule::enum(EmployeeSection::class)|distinct · الصلاحيات (gap P-01 — «تحديد الكل») · source: GET {{base_url}}provider/lookups/sections · example: `appointments`\n\n\n## Behaviour notes\n**Steps:**\n1. multipart `POST` + `_method=PUT`.\n2. كلمة المرور اختيارية (لو أُرسلت تُغيّر وتُحذف توكنات الموظف).\n3. sync الصلاحيات؛ لا يمكن تعديل صلاحيات/حالة الـ owner (`employee.owner_protected`).\n4. تعطيله عبر `is_active=0` = نفس أثر toggle (حذف التوكنات).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/employee.updated` → ar «تم تحديث بيانات الموظف» / en \"Employee updated\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (…) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | محاولة تعطيل/تقليص صلاحيات الحساب الرئيسي | `employee.owner_protected` | لا يمكن حذف أو تعطيل الحساب الرئيسي | The main account can't be deleted or disabled |\n| 404 | موظف خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `employees` (`employee.section:employees`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"employees\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · PUT · method spoofing"
                        },
                        {
                          "key": "avatar",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png|max:2048 · الصورة (JPG/PNG ≤2MB)"
                        },
                        {
                          "key": "name",
                          "value": "سارة خالد الشهراني",
                          "type": "text",
                          "description": "required · required|string|max:150 · اسم الموظف"
                        },
                        {
                          "key": "job_title",
                          "value": "ممرضة أولى",
                          "type": "text",
                          "description": "required · required|string|max:100 · المسمى الوظيفي (gap P-03)"
                        },
                        {
                          "key": "country_code",
                          "value": "966",
                          "type": "text",
                          "description": "required · required|exists:countries,code · مفتاح الدولة"
                        },
                        {
                          "key": "phone",
                          "value": "{{emp_phone}}",
                          "type": "text",
                          "description": "required · required|PhoneNormalizer|regex:/^5\\d{8}$/|unique:employees,phone,{id} (whereNull deleted_at) · الجوال (فريد على مستوى المنصة)"
                        },
                        {
                          "key": "email",
                          "value": "{{emp_email}}",
                          "type": "text",
                          "description": "required · required|email|max:150|unique:employees,email,{id} (whereNull deleted_at) · البريد"
                        },
                        {
                          "key": "password",
                          "value": "Password@123",
                          "type": "text",
                          "description": "optional · nullable|string|min:8|confirmed · كلمة مرور جديدة (اختياري)"
                        },
                        {
                          "key": "password_confirmation",
                          "value": "Password@123",
                          "type": "text",
                          "description": "with password · same:password · تأكيد كلمة المرور"
                        },
                        {
                          "key": "is_active",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · حالة الحساب"
                        },
                        {
                          "key": "branch_id",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|exists:branches,id (in my organization, whereNull deleted_at) · الفرع · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "sections[0]",
                          "value": "appointments",
                          "type": "text",
                          "description": "required · required|array|min:1; sections.* = Rule::enum(EmployeeSection::class)|distinct · الصلاحيات (gap P-01 — «تحديد الكل») · source: GET {{base_url}}provider/lookups/sections"
                        },
                        {
                          "key": "sections[1]",
                          "value": "donations",
                          "type": "text",
                          "description": "required · required|array|min:1; sections.* = Rule::enum(EmployeeSection::class)|distinct · الصلاحيات (gap P-01 — «تحديد الكل») · source: GET {{base_url}}provider/lookups/sections"
                        },
                        {
                          "key": "sections[2]",
                          "value": "inventory",
                          "type": "text",
                          "description": "required · required|array|min:1; sections.* = Rule::enum(EmployeeSection::class)|distinct · الصلاحيات (gap P-01 — «تحديد الكل») · source: GET {{base_url}}provider/lookups/sections"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة أولى",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            },
                            {
                              "key": "sections[2]",
                              "value": "inventory",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث بيانات الموظف\",\n  \"data\": {\n    \"id\": 26,\n    \"employee_no\": \"EMP-00026\",\n    \"name\": \"سارة خالد الشهراني\",\n    \"job_title\": \"ممرضة أولى\",\n    \"country_code\": \"966\",\n    \"phone\": \"503456789\",\n    \"email\": \"s.shahrani@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/photo.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2026-10-18\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/photo.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"المخزون\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"last_login_at\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تعطيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة أولى",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            },
                            {
                              "key": "sections[2]",
                              "value": "inventory",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Employee updated\",\n  \"data\": {\n    \"id\": 26,\n    \"employee_no\": \"EMP-00026\",\n    \"name\": \"سارة خالد الشهراني\",\n    \"job_title\": \"ممرضة أولى\",\n    \"country_code\": \"966\",\n    \"phone\": \"503456789\",\n    \"email\": \"s.shahrani@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/photo.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2026-10-18\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/photo.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"Jeddah Branch\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"Inventory\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"last_login_at\": null,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (…)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "phone",
                              "value": "123",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل الاسم مطلوب. (and 7 more errors)\",\n  \"errors\": {\n    \"name\": [\n      \"الحقل الاسم مطلوب.\"\n    ],\n    \"job_title\": [\n      \"الحقل job title مطلوب.\"\n    ],\n    \"country_code\": [\n      \"الحقل رمز الدولة مطلوب.\"\n    ],\n    \"phone\": [\n      \"صيغة حقل الهاتف غير صالحة.\"\n    ],\n    \"email\": [\n      \"الحقل البريد الالكتروني مطلوب.\"\n    ],\n    \"is_active\": [\n      \"الحقل الحالة مطلوب.\"\n    ],\n    \"branch_id\": [\n      \"الحقل الفرع مطلوب.\"\n    ],\n    \"sections\": [\n      \"الحقل sections مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — محاولة تعطيل/تقليص صلاحيات الحساب الرئيسي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "is_active",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "name",
                              "value": "أحمد محمد العمري",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "منسق بنك الدم",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "a.alomari@kfshrc.edu.sa",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن حذف أو تعطيل الحساب الرئيسي\"\n}"
                    },
                    {
                      "name": "❌ 404 — موظف خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة أولى",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            },
                            {
                              "key": "sections[2]",
                              "value": "inventory",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة أولى",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            },
                            {
                              "key": "sections[2]",
                              "value": "inventory",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم employees (employee.section:employees) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name",
                              "value": "سارة خالد الشهراني",
                              "type": "text"
                            },
                            {
                              "key": "job_title",
                              "value": "ممرضة أولى",
                              "type": "text"
                            },
                            {
                              "key": "sections[0]",
                              "value": "appointments",
                              "type": "text"
                            },
                            {
                              "key": "sections[1]",
                              "value": "donations",
                              "type": "text"
                            },
                            {
                              "key": "sections[2]",
                              "value": "inventory",
                              "type": "text"
                            },
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0503456789",
                              "type": "text"
                            },
                            {
                              "key": "email",
                              "value": "s.shahrani@kfshrc.edu.sa",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "toggle-employee-status",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"created_at\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/employees/{id}/toggle-status",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "employees",
                        "{id}",
                        "toggle-status"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_employee_id}}",
                          "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفعيل/تعطيل حساب موظف.\n\n## Screens\n- P81 Employee Details — provider (web) `2239:1013`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2239-1013&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2239-1013&scaling=scale-down&content-scaling=fixed)\n- P78 Employee Management — provider (web) `2095:30046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30046&scaling=scale-down&content-scaling=fixed)\n- G-P19 تفعيل/تعطيل يُنهي الجلسات (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n### Path params\n- `id` — required · employee in scope · الموظف · source: GET {{base_url}}provider/employees · example: `3`\n\n\n## Behaviour notes\n**Steps:**\n1. يقلب `is_active`؛ عند التعطيل يحذف **كل** توكناته فوراً (يُطرد من اللوحة).\n2. owner/نفسه → 409.\n\n**Status / state transitions:** `ActiveStatus`: active ⇄ inactive.\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/employee.status_toggled` → ar «تم تحديث حالة الموظف» / en \"Employee status updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | الحساب الرئيسي أو نفسه | `employee.owner_protected` | لا يمكن حذف أو تعطيل الحساب الرئيسي | The main account can't be deleted or disabled |\n| 404 | موظف خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `employees` (`employee.section:employees`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"employees\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث حالة الموظف\",\n  \"data\": {\n    \"id\": 26,\n    \"employee_no\": \"EMP-00026\",\n    \"name\": \"سارة خالد الشهراني\",\n    \"job_title\": \"ممرضة أولى\",\n    \"email\": \"s.shahrani@kfshrc.edu.sa\",\n    \"phone\": \"503456789\",\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"inactive\",\n      \"label\": \"غير نشط\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"avatar\": \"http://help.test/uploads/employees/photo.png\",\n    \"is_owner\": false,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تفعيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Employee status updated\",\n  \"data\": {\n    \"id\": 26,\n    \"employee_no\": \"EMP-00026\",\n    \"name\": \"سارة خالد الشهراني\",\n    \"job_title\": \"ممرضة أولى\",\n    \"email\": \"s.shahrani@kfshrc.edu.sa\",\n    \"phone\": \"503456789\",\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"Jeddah Branch\"\n    },\n    \"created_at\": \"2026-10-18\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"avatar\": \"http://help.test/uploads/employees/photo.png\",\n    \"is_owner\": false,\n    \"action_buttons\": [\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/employees/26/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/employees/26\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — الحساب الرئيسي أو نفسه",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن حذف أو تعطيل الحساب الرئيسي\"\n}"
                    },
                    {
                      "name": "❌ 404 — موظف خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم employees (employee.section:employees) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "delete-employee",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/employees/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "employees",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_employee_id}}",
                          "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                        }
                      ]
                    },
                    "description": "## Purpose\nحذف موظف (soft).\n\n## Screens\n- P81 Employee Details — حذف (تأكيد) — provider (web) `2239:1013`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2239-1013&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2239-1013&scaling=scale-down&content-scaling=fixed)\n- P78 Employee Management — حذف — provider (web) `2095:30046`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30046&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30046&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n### Path params\n- `id` — required · employee in scope · الموظف · source: GET {{base_url}}provider/employees · example: `3`\n\n\n## Behaviour notes\n**Steps:**\n1. SoftDelete + حذف توكناته وأجهزته؛ سجلاته (مراحل/حركات «تم بواسطة») تبقى وتعرض اسمه.\n2. الـ owner محمي (409)، ولا يحذف الموظف نفسه.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/employee.deleted` → ar «تم حذف الموظف» / en \"Employee deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | الحساب الرئيسي أو نفسه | `employee.owner_protected` | لا يمكن حذف أو تعطيل الحساب الرئيسي | The main account can't be deleted or disabled |\n| 404 | موظف خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `employees` (`employee.section:employees`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"employees\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الموظف\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Employee deleted\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 409 — الحساب الرئيسي أو نفسه",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن حذف أو تعطيل الحساب الرئيسي\"\n}"
                    },
                    {
                      "name": "❌ 404 — موظف خارج النطاق",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم employees (employee.section:employees) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/employees/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "employees",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_employee_id}}",
                              "description": "required · employee in scope · الموظف · source: GET {{base_url}}provider/employees"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `employees` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/sections",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/sections",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "sections"
                          ]
                        },
                        "description": "## Purpose\nمصدر `sections[]` (أقسام الصلاحيات) — مصدر أقسام الصلاحيات في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P79 Add Employee — الصلاحيات (gap P-01) — provider (web) `2095:30908`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30908&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-30908&scaling=scale-down&content-scaling=fixed)\n- P80 Edit Employee — provider (web) `2095:31025`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31025&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31025&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:employees`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\EmployeeSection` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/sections",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "sections"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"home\",\n      \"label\": \"الرئيسية\"\n    },\n    {\n      \"value\": \"appointments\",\n      \"label\": \"المواعيد والحجوزات\"\n    },\n    {\n      \"value\": \"appeals\",\n      \"label\": \"النداءات\"\n    },\n    {\n      \"value\": \"donations\",\n      \"label\": \"متابعة التبرعات\"\n    },\n    {\n      \"value\": \"inventory\",\n      \"label\": \"المخزون\"\n    },\n    {\n      \"value\": \"needs\",\n      \"label\": \"إجمالي الاحتياج\"\n    },\n    {\n      \"value\": \"contact_admin\",\n      \"label\": \"التواصل مع الإدارة\"\n    },\n    {\n      \"value\": \"organization\",\n      \"label\": \"بيانات الجهة\"\n    },\n    {\n      \"value\": \"branches\",\n      \"label\": \"إدارة الفروع\"\n    },\n    {\n      \"value\": \"employees\",\n      \"label\": \"الموظفون\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/sections",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "sections"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"home\",\n      \"label\": \"Home\"\n    },\n    {\n      \"value\": \"appointments\",\n      \"label\": \"Appointments & bookings\"\n    },\n    {\n      \"value\": \"appeals\",\n      \"label\": \"Appeals\"\n    },\n    {\n      \"value\": \"donations\",\n      \"label\": \"Donation tracking\"\n    },\n    {\n      \"value\": \"inventory\",\n      \"label\": \"Inventory\"\n    },\n    {\n      \"value\": \"needs\",\n      \"label\": \"Blood needs\"\n    },\n    {\n      \"value\": \"contact_admin\",\n      \"label\": \"Contact admin\"\n    },\n    {\n      \"value\": \"organization\",\n      \"label\": \"Organization data\"\n    },\n    {\n      \"value\": \"branches\",\n      \"label\": \"Branch management\"\n    },\n    {\n      \"value\": \"employees\",\n      \"label\": \"Employees\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/sections",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "sections"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — forbidden_section (موظف بلا قسم الموظفين)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/sections",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "sections"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"employees\"\n    ]\n  }\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "branches",
              "description": "Flow `branches` — 15 endpoints (sprint ≤ 4). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "branches",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"rows\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"working_hours_text\"); pm.expect(o).to.have.property(\"slot_duration\"); pm.expect(o).to.have.property(\"slot_capacity\"); pm.expect(o).to.have.property(\"current_bookings\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"pagination\", () => { pm.expect(pm.response.json().data).to.have.property(\"pagination\"); pm.expect(pm.response.json().data.data).to.be.an(\"array\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches"
                      ],
                      "query": [
                        {
                          "key": "status",
                          "value": "active",
                          "description": "optional · nullable|in:active,inactive · الحالة",
                          "disabled": true
                        },
                        {
                          "key": "city_id",
                          "value": "1",
                          "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                          "disabled": true
                        },
                        {
                          "key": "search",
                          "value": "جدة",
                          "description": "optional · nullable|string|max:100 · بحث",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional · nullable|integer|min:1 · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة فروع الجهة.\n\n## Screens\n- P82 Branch Management — provider (web) `2095:28637`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-28637&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-28637&scaling=scale-down&content-scaling=fixed)\n- G-P18 تفعيل/تعطيل + حذف (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Query params\n- `status` — optional · nullable|in:active,inactive · الحالة · example: `active`\n- `city_id` — optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n- `search` — optional · nullable|string|max:100 · بحث · example: `جدة`\n- `page` — optional · nullable|integer|min:1 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. فروع جهتي (owner) أو فرعي، مع فلاتر `status`, `city_id`, `search`.\n2. لكل صف: BR-، الاسم، المدينة، مواعيد العمل (نص)، مدة الفترة، السعة لكل فترة، الحجوزات الحالية (pending+confirmed قادمة)، الحالة، `action_buttons`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (status, city_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "جدة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"code\": \"BR-001\",\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n        \"city\": \"الرياض\",\n        \"working_hours_text\": \"السبت – الخميس 08:00 – 20:00\",\n        \"slot_duration\": 30,\n        \"slot_capacity\": 5,\n        \"current_bookings\": 44,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"عرض\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/1\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/1\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/1/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/1\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"BR-002\",\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n        \"city\": \"جدة\",\n        \"working_hours_text\": \"الأحد – الخميس 07:30 – 17:00\",\n        \"slot_duration\": 60,\n        \"slot_capacity\": 15,\n        \"current_bookings\": 7,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"عرض\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/2\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/2\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/2/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/2\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"code\": \"BR-003\",\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n        \"city\": \"الدمام\",\n        \"working_hours_text\": \"الأحد – الخميس 08:00 – 16:00\",\n        \"slot_duration\": 60,\n        \"slot_capacity\": 10,\n        \"current_bookings\": 1,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"نشط\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"عرض\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/3\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/3\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تعطيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/3/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/3\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"code\": \"BR-004\",\n        \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n        \"city\": \"مكة المكرمة\",\n        \"working_hours_text\": \"السبت – الخميس 07:00 – 18:00\",\n        \"slot_duration\": 60,\n        \"slot_capacity\": 20,\n        \"current_bookings\": 5,\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"غير نشط\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"عرض\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/4\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"تعديل\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/4\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"تفعيل\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/4/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"حذف\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/4\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 4,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 4\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "جدة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"code\": \"BR-001\",\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n        \"city\": \"Riyadh\",\n        \"working_hours_text\": \"Saturday – Thursday 08:00 – 20:00\",\n        \"slot_duration\": 30,\n        \"slot_capacity\": 5,\n        \"current_bookings\": 44,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"View\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/1\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/1\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/1/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/1\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 2,\n        \"code\": \"BR-002\",\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n        \"city\": \"Jeddah\",\n        \"working_hours_text\": \"Sunday – Thursday 07:30 – 17:00\",\n        \"slot_duration\": 60,\n        \"slot_capacity\": 15,\n        \"current_bookings\": 7,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"View\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/2\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/2\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/2/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/2\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 3,\n        \"code\": \"BR-003\",\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n        \"city\": \"Dammam\",\n        \"working_hours_text\": \"Sunday – Thursday 08:00 – 16:00\",\n        \"slot_duration\": 60,\n        \"slot_capacity\": 10,\n        \"current_bookings\": 1,\n        \"status\": {\n          \"value\": \"active\",\n          \"label\": \"Active\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"View\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/3\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/3\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Deactivate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/3/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/3\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      },\n      {\n        \"id\": 4,\n        \"code\": \"BR-004\",\n        \"name\": \"King Faisal Specialist Hospital & Research Centre — Makkah Branch\",\n        \"city\": \"Mecca\",\n        \"working_hours_text\": \"Saturday – Thursday 07:00 – 18:00\",\n        \"slot_duration\": 60,\n        \"slot_capacity\": 20,\n        \"current_bookings\": 5,\n        \"status\": {\n          \"value\": \"inactive\",\n          \"label\": \"Inactive\",\n          \"color\": \"#DC2626\",\n          \"bg_color\": \"#FEF2F2\"\n        },\n        \"action_buttons\": [\n          {\n            \"key\": \"view\",\n            \"label\": \"View\",\n            \"method\": \"GET\",\n            \"endpoint\": \"provider/branches/4\",\n            \"style\": \"link\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"edit\",\n            \"label\": \"Edit\",\n            \"method\": \"PUT\",\n            \"endpoint\": \"provider/branches/4\",\n            \"style\": \"secondary\",\n            \"confirm\": false,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"toggle_status\",\n            \"label\": \"Activate\",\n            \"method\": \"POST\",\n            \"endpoint\": \"provider/branches/4/toggle-status\",\n            \"style\": \"warning\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          },\n          {\n            \"key\": \"delete\",\n            \"label\": \"Delete\",\n            \"method\": \"DELETE\",\n            \"endpoint\": \"provider/branches/4\",\n            \"style\": \"danger\",\n            \"confirm\": true,\n            \"requires_reason\": false,\n            \"is_available\": true\n          }\n        ]\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 4,\n      \"last_page\": 1,\n      \"from\": 1,\n      \"to\": 4\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status, city_id)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches?status=weird&city_id=99999",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "جدة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الحالة غير صالح. (and 1 more error)\",\n  \"errors\": {\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ],\n    \"city_id\": [\n      \"حقل المحدد المدينة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "جدة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "جدة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "active",
                              "description": "optional · nullable|in:active,inactive · الحالة",
                              "disabled": true
                            },
                            {
                              "key": "city_id",
                              "value": "1",
                              "description": "optional · nullable|exists:cities,id · المدينة · source: GET {{base_url}}cities",
                              "disabled": true
                            },
                            {
                              "key": "search",
                              "value": "جدة",
                              "description": "optional · nullable|string|max:100 · بحث",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional · nullable|integer|min:1 · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "create-branch",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"district\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"address\"); pm.expect(o).to.have.property(\"address_ar\"); pm.expect(o).to.have.property(\"address_en\"); pm.expect(o).to.have.property(\"lat\"); pm.expect(o).to.have.property(\"lng\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"slot_duration\"); pm.expect(o).to.have.property(\"slot_capacity\"); pm.expect(o).to.have.property(\"donation_types\"); pm.expect(o).to.have.property(\"working_hours\"); pm.expect(o).to.have.property(\"upcoming_closures_alert\"); pm.expect(o).to.have.property(\"current_bookings\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "{ const v = pm.response.json().data.id; if (v) { pm.collectionVariables.set(\"provider_branch_id\", v); pm.environment.set(\"provider_branch_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches"
                      ]
                    },
                    "description": "## Purpose\nإنشاء فرع كامل (بيانات + مواعيد + سعة).\n\n## Screens\n- P83 Add Branch / Step 1 — بيانات الفرع — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n- P88 Step 2 — مواعيد العمل — provider (web) `2095:33003`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33003&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33003&scaling=scale-down&content-scaling=fixed)\n- P89 Step 3 — السعة والفترات — provider (web) `2095:33273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&scaling=scale-down&content-scaling=fixed)\n- G-P02 الاسم/العنوان English (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches` · `employee.owner:branch`\n\n## Parameters & fields\n### Body (form-data)\n- `name[ar]` — required · required|string|max:200 · اسم الفرع · example: `فرع جدة`\n- `name[en]` — optional · nullable|string|max:200 — فارغ = يُنسخ العربي (P-02) · Branch name (English) · example: `Jeddah Branch`\n- `city_id` — required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `2`\n- `district_id` — optional · nullable|exists:districts,id (belongs to city) · الحي · source: GET {{base_url}}cities/{id}/districts · example: `7`\n- `phone` — required · required|string|max:20 · الهاتف · example: `0126677777`\n- `address[ar]` — required · required|string|max:255 · العنوان التفصيلي · example: `حي الروضة، شارع التحلية`\n- `address[en]` — optional · nullable|string|max:255 (fallback ar) · Address (English) · example: `Al Rawdah, Tahlia St`\n- `lat` — required · required|numeric|between:-90,90 · الموقع على الخريطة · example: `21.5610`\n- `lng` — required · required|numeric|between:-180,180 · الموقع على الخريطة · example: `39.1525`\n- `image` — optional · nullable|image|mimes:jpg,jpeg,png|max:4096 · صورة الفرع · example: `(file)`\n- `donation_type_ids[]` — required · required|array|min:1; .* exists:donation_types,id (whereNull deleted_at) · أنواع التبرع المتاحة · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `is_active` — required · required|boolean · الحالة · example: `1`\n- `working_hours[0][day_of_week]` — required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت) · example: `6`\n- `working_hours[0][is_working]` — required · required|boolean · يوم عمل/إجازة أسبوعية · example: `1`\n- `working_hours[0][opens_at]` — required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من · example: `08:00`\n- `working_hours[0][closes_at]` — required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى · example: `20:00`\n- `slot_duration` — required · required|Rule::enum(SlotDuration::class) (30,60,90,120) · مدة الفترة · source: GET {{base_url}}provider/lookups/slot-durations · example: `60`\n- `slot_capacity` — required · required|integer|min:1|max:100 · السعة لكل فترة · example: `15`\n\n\n## Behaviour notes\n**Steps:**\n1. الخطوات 1→2→3 client-side؛ «حفظ وإضافة الفرع» يرسل **طلباً واحداً** بكل الحقول (multipart).\n2. داخل transaction: `branches` (+ترجمات ar/en — en فارغ = نسخ ar)، `branch_donation_type` sync، `branch_working_hours` (7 صفوف)، الصورة؛ `code` BR- عبر Observer.\n3. معاينة «48 فترة» قبل الحفظ = `POST provider/branches/slots-preview`.\n\n**Status / state transitions:** none (read-only).\n\n**Multi-step flow:** wizard: P83 (بيانات) → P88 (مواعيد) → P89 (سعة) → **POST هذا** (طلب واحد). المعاينة بين الخطوات: `POST branches/slots-preview`.\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: the branches folder works on the branch created here ({{provider_branch_id}}) - slots, slot-override and every other step use it; delete-branch is the LAST request of the folder.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.created` → ar «تمت إضافة الفرع بنجاح» / en \"Branch added successfully\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (name, city_id, phone, address, lat/lng, donation_type_ids, working_hours, slot_duration, slot_capacity) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 403 | ليس الحساب الرئيسي | `branch.owner_only` | إدارة الفروع متاحة للحساب الرئيسي فقط | Only the main account can manage branches |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "name[ar]",
                          "value": "فرع جدة",
                          "type": "text",
                          "description": "required · required|string|max:200 · اسم الفرع"
                        },
                        {
                          "key": "name[en]",
                          "value": "Jeddah Branch",
                          "type": "text",
                          "description": "optional · nullable|string|max:200 — فارغ = يُنسخ العربي (P-02) · Branch name (English)"
                        },
                        {
                          "key": "city_id",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities"
                        },
                        {
                          "key": "district_id",
                          "value": "8",
                          "type": "text",
                          "description": "optional · nullable|exists:districts,id (belongs to city) · الحي · source: GET {{base_url}}cities/{id}/districts"
                        },
                        {
                          "key": "phone",
                          "value": "0126677777",
                          "type": "text",
                          "description": "required · required|string|max:20 · الهاتف"
                        },
                        {
                          "key": "address[ar]",
                          "value": "حي الروضة، شارع التحلية",
                          "type": "text",
                          "description": "required · required|string|max:255 · العنوان التفصيلي"
                        },
                        {
                          "key": "address[en]",
                          "value": "Al Rawdah, Tahlia St",
                          "type": "text",
                          "description": "optional · nullable|string|max:255 (fallback ar) · Address (English)"
                        },
                        {
                          "key": "lat",
                          "value": "21.561",
                          "type": "text",
                          "description": "required · required|numeric|between:-90,90 · الموقع على الخريطة"
                        },
                        {
                          "key": "lng",
                          "value": "39.1525",
                          "type": "text",
                          "description": "required · required|numeric|between:-180,180 · الموقع على الخريطة"
                        },
                        {
                          "key": "image",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png|max:4096 · صورة الفرع"
                        },
                        {
                          "key": "donation_type_ids[0]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|array|min:1; .* exists:donation_types,id (whereNull deleted_at) · أنواع التبرع المتاحة · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "donation_type_ids[1]",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|array|min:1; .* exists:donation_types,id (whereNull deleted_at) · أنواع التبرع المتاحة · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "is_active",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · الحالة"
                        },
                        {
                          "key": "working_hours[0][day_of_week]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[0][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[0][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[0][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[1][day_of_week]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[1][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[1][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[1][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[2][day_of_week]",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[2][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[2][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[2][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[3][day_of_week]",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[3][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[3][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[3][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[4][day_of_week]",
                          "value": "4",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[4][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[4][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[4][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[5][day_of_week]",
                          "value": "5",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[5][is_working]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][day_of_week]",
                          "value": "6",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[6][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[6][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "slot_duration",
                          "value": "60",
                          "type": "text",
                          "description": "required · required|Rule::enum(SlotDuration::class) (30,60,90,120) · مدة الفترة · source: GET {{base_url}}provider/lookups/slot-durations"
                        },
                        {
                          "key": "slot_capacity",
                          "value": "15",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:100 · السعة لكل فترة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            },
                            {
                              "key": "image",
                              "value": "(file)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تمت إضافة الفرع بنجاح\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BR-010\",\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n    \"name_ar\": \"فرع جدة\",\n    \"name_en\": \"Jeddah Branch\",\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    \"district\": {\n      \"id\": 8,\n      \"name\": \"البلد\"\n    },\n    \"phone\": \"0126677777\",\n    \"address\": \"حي الروضة، شارع التحلية\",\n    \"address_ar\": \"حي الروضة، شارع التحلية\",\n    \"address_en\": \"Al Rawdah, Tahlia St\",\n    \"lat\": 21.561,\n    \"lng\": 39.1525,\n    \"image\": \"http://help.test/uploads/branches/photo.png\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"slot_duration\": 60,\n    \"slot_capacity\": 15,\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"دم كامل\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"صفائح دموية\"\n      }\n    ],\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"الأحد\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"الاثنين\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"الثلاثاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"الأربعاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"الخميس\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"الجمعة\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"السبت\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"upcoming_closures_alert\": null,\n    \"current_bookings\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"عرض\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تعطيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/10/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "فرع الدمام",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Dammam Branch",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Branch added successfully\",\n  \"data\": {\n    \"id\": 11,\n    \"code\": \"BR-011\",\n    \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n    \"name_ar\": \"فرع الدمام\",\n    \"name_en\": \"Dammam Branch\",\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"Jeddah\"\n    },\n    \"district\": {\n      \"id\": 8,\n      \"name\": \"Al Balad\"\n    },\n    \"phone\": \"0126677777\",\n    \"address\": \"Al Rawdah, Tahlia St\",\n    \"address_ar\": \"حي الروضة، شارع التحلية\",\n    \"address_en\": \"Al Rawdah, Tahlia St\",\n    \"lat\": 21.561,\n    \"lng\": 39.1525,\n    \"image\": null,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"slot_duration\": 60,\n    \"slot_capacity\": 15,\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"Whole Blood\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Platelets\"\n      }\n    ],\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"Sunday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"Monday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"Tuesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"Wednesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"Thursday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"Friday\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"Saturday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"upcoming_closures_alert\": null,\n    \"current_bookings\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"View\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/11\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/11\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/11/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/11\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (name, city_id, phone, address, lat/lng, donation_type_ids, working_hours)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "city_id",
                              "value": "999999",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "45",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل الاسم مطلوب. (and 12 more errors)\",\n  \"errors\": {\n    \"name\": [\n      \"الحقل الاسم مطلوب.\"\n    ],\n    \"name.ar\": [\n      \"الحقل الاسم بالعربية مطلوب.\"\n    ],\n    \"city_id\": [\n      \"حقل المحدد المدينة غير صالح.\"\n    ],\n    \"phone\": [\n      \"الحقل الهاتف مطلوب.\"\n    ],\n    \"address\": [\n      \"الحقل العنوان مطلوب.\"\n    ],\n    \"address.ar\": [\n      \"الحقل address.ar مطلوب.\"\n    ],\n    \"lat\": [\n      \"الحقل خط العرض مطلوب.\"\n    ],\n    \"lng\": [\n      \"الحقل خط الطول مطلوب.\"\n    ],\n    \"donation_type_ids\": [\n      \"الحقل donation type ids مطلوب.\"\n    ],\n    \"is_active\": [\n      \"الحقل الحالة مطلوب.\"\n    ],\n    \"slot_duration\": [\n      \"حقل المحدد slot duration غير صالح.\"\n    ],\n    \"slot_capacity\": [\n      \"الحقل slot capacity مطلوب.\"\n    ],\n    \"working_hours\": [\n      \"الحقل working hours مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — ليس الحساب الرئيسي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"إدارة الفروع متاحة للحساب الرئيسي فقط\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-show",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"district\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"address\"); pm.expect(o).to.have.property(\"address_ar\"); pm.expect(o).to.have.property(\"address_en\"); pm.expect(o).to.have.property(\"lat\"); pm.expect(o).to.have.property(\"lng\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"slot_duration\"); pm.expect(o).to.have.property(\"slot_capacity\"); pm.expect(o).to.have.property(\"donation_types\"); pm.expect(o).to.have.property(\"working_hours\"); pm.expect(o).to.have.property(\"upcoming_closures_alert\"); pm.expect(o).to.have.property(\"current_bookings\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفاصيل فرع.\n\n## Screens\n- P86 Branch Details / Jeddah — provider (web) `2095:32238`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `BranchResource` الكامل: الحالة، BR، المدينة، الهاتف، الصورة، العنوان ar/en، الموقع، الأنواع، مواعيد العمل الأسبوعية (لكل يوم: الحالة، من، إلى)، `upcoming_closures_alert` (تنبيهات الإجازات القادمة)، السعة/المدة، الحجوزات الحالية، `action_buttons`.\n2. الإجازات تُجلب منفصلة (`GET branches/{id}/closures`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BR-010\",\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n    \"name_ar\": \"فرع جدة\",\n    \"name_en\": \"Jeddah Branch\",\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    \"district\": {\n      \"id\": 8,\n      \"name\": \"البلد\"\n    },\n    \"phone\": \"0126677777\",\n    \"address\": \"حي الروضة، شارع التحلية\",\n    \"address_ar\": \"حي الروضة، شارع التحلية\",\n    \"address_en\": \"Al Rawdah, Tahlia St\",\n    \"lat\": 21.561,\n    \"lng\": 39.1525,\n    \"image\": \"http://help.test/uploads/branches/photo.png\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"slot_duration\": 60,\n    \"slot_capacity\": 15,\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"دم كامل\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"صفائح دموية\"\n      }\n    ],\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"الأحد\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"الاثنين\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"الثلاثاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"الأربعاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"الخميس\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"الجمعة\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"السبت\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"upcoming_closures_alert\": null,\n    \"current_bookings\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"عرض\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تعطيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/10/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BR-010\",\n    \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n    \"name_ar\": \"فرع جدة\",\n    \"name_en\": \"Jeddah Branch\",\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"Jeddah\"\n    },\n    \"district\": {\n      \"id\": 8,\n      \"name\": \"Al Balad\"\n    },\n    \"phone\": \"0126677777\",\n    \"address\": \"Al Rawdah, Tahlia St\",\n    \"address_ar\": \"حي الروضة، شارع التحلية\",\n    \"address_en\": \"Al Rawdah, Tahlia St\",\n    \"lat\": 21.561,\n    \"lng\": 39.1525,\n    \"image\": \"http://help.test/uploads/branches/photo.png\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"slot_duration\": 60,\n    \"slot_capacity\": 15,\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"Whole Blood\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Platelets\"\n      }\n    ],\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"Sunday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"Monday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"Tuesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"Wednesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"Thursday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"Friday\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"Saturday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"upcoming_closures_alert\": null,\n    \"current_bookings\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"View\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/10/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "update-branch",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"district\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"address\"); pm.expect(o).to.have.property(\"address_ar\"); pm.expect(o).to.have.property(\"address_en\"); pm.expect(o).to.have.property(\"lat\"); pm.expect(o).to.have.property(\"lng\"); pm.expect(o).to.have.property(\"image\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"slot_duration\"); pm.expect(o).to.have.property(\"slot_capacity\"); pm.expect(o).to.have.property(\"donation_types\"); pm.expect(o).to.have.property(\"working_hours\"); pm.expect(o).to.have.property(\"upcoming_closures_alert\"); pm.expect(o).to.have.property(\"current_bookings\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعديل فرع.\n\n## Screens\n- G-P13 تعديل الفرع = نفس wizard الإضافة بقيم معبأة (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n- P86 Branch Details — «تعديل الفرع» — provider (web) `2095:32238`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches` · `employee.owner:branch`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Body (form-data)\n- `_method` — required · PUT · method spoofing · example: `PUT`\n- `name[ar]` — required · required|string|max:200 · اسم الفرع · example: `فرع جدة`\n- `name[en]` — optional · nullable|string|max:200 — فارغ = يُنسخ العربي (P-02) · Branch name (English) · example: `Jeddah Branch`\n- `city_id` — required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `2`\n- `district_id` — optional · nullable|exists:districts,id (belongs to city) · الحي · source: GET {{base_url}}cities/{id}/districts · example: `7`\n- `phone` — required · required|string|max:20 · الهاتف · example: `0126677777`\n- `address[ar]` — required · required|string|max:255 · العنوان التفصيلي · example: `حي الروضة، شارع التحلية`\n- `address[en]` — optional · nullable|string|max:255 (fallback ar) · Address (English) · example: `Al Rawdah, Tahlia St`\n- `lat` — required · required|numeric|between:-90,90 · الموقع على الخريطة · example: `21.5610`\n- `lng` — required · required|numeric|between:-180,180 · الموقع على الخريطة · example: `39.1525`\n- `image` — optional · nullable|image|mimes:jpg,jpeg,png|max:4096 · صورة الفرع · example: `(file)`\n- `donation_type_ids[]` — required · required|array|min:1; .* exists:donation_types,id (whereNull deleted_at) · أنواع التبرع المتاحة · source: GET {{base_url}}lookups/donation-types · example: `1`\n- `is_active` — required · required|boolean · الحالة · example: `1`\n- `working_hours[0][day_of_week]` — required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت) · example: `6`\n- `working_hours[0][is_working]` — required · required|boolean · يوم عمل/إجازة أسبوعية · example: `1`\n- `working_hours[0][opens_at]` — required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من · example: `08:00`\n- `working_hours[0][closes_at]` — required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى · example: `20:00`\n- `slot_duration` — required · required|Rule::enum(SlotDuration::class) (30,60,90,120) · مدة الفترة · source: GET {{base_url}}provider/lookups/slot-durations · example: `60`\n- `slot_capacity` — required · required|integer|min:1|max:100 · السعة لكل فترة · example: `15`\n\n\n## Behaviour notes\n**Steps:**\n1. نفس حقول الإضافة (form-data `POST` + `_method=PUT`).\n2. تغيير `slot_duration`/`slot_capacity`/الساعات **لا يلغي** الحجوزات القائمة؛ الفترات الجديدة تنطبق على الحجوزات الجديدة فقط (الحجز القائم محفوظ بـ `starts_at/ends_at`).\n3. إزالة نوع تبرع من الفرع لا تلغي حجوزاته القائمة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.updated` → ar «تم تحديث بيانات الفرع» / en \"Branch updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (same as store) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 403 | ليس الحساب الرئيسي | `branch.owner_only` | إدارة الفروع متاحة للحساب الرئيسي فقط | Only the main account can manage branches |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n\n> الـ route هو `PUT {{base_url}}provider/branches/{id}`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "name[ar]",
                          "value": "فرع جدة",
                          "type": "text",
                          "description": "required · required|string|max:200 · اسم الفرع"
                        },
                        {
                          "key": "name[en]",
                          "value": "Jeddah Branch",
                          "type": "text",
                          "description": "optional · nullable|string|max:200 — فارغ = يُنسخ العربي (P-02) · Branch name (English)"
                        },
                        {
                          "key": "city_id",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|exists:cities,id · المدينة · source: GET {{base_url}}cities"
                        },
                        {
                          "key": "district_id",
                          "value": "8",
                          "type": "text",
                          "description": "optional · nullable|exists:districts,id (belongs to city) · الحي · source: GET {{base_url}}cities/{id}/districts"
                        },
                        {
                          "key": "phone",
                          "value": "0126677777",
                          "type": "text",
                          "description": "required · required|string|max:20 · الهاتف"
                        },
                        {
                          "key": "address[ar]",
                          "value": "حي الروضة، شارع التحلية",
                          "type": "text",
                          "description": "required · required|string|max:255 · العنوان التفصيلي"
                        },
                        {
                          "key": "address[en]",
                          "value": "Al Rawdah, Tahlia St",
                          "type": "text",
                          "description": "optional · nullable|string|max:255 (fallback ar) · Address (English)"
                        },
                        {
                          "key": "lat",
                          "value": "21.561",
                          "type": "text",
                          "description": "required · required|numeric|between:-90,90 · الموقع على الخريطة"
                        },
                        {
                          "key": "lng",
                          "value": "39.1525",
                          "type": "text",
                          "description": "required · required|numeric|between:-180,180 · الموقع على الخريطة"
                        },
                        {
                          "key": "image",
                          "type": "file",
                          "src": [],
                          "disabled": true,
                          "description": "optional · nullable|image|mimes:jpg,jpeg,png|max:4096 · صورة الفرع"
                        },
                        {
                          "key": "donation_type_ids[0]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|array|min:1; .* exists:donation_types,id (whereNull deleted_at) · أنواع التبرع المتاحة · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "donation_type_ids[1]",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|array|min:1; .* exists:donation_types,id (whereNull deleted_at) · أنواع التبرع المتاحة · source: GET {{base_url}}lookups/donation-types"
                        },
                        {
                          "key": "is_active",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · الحالة"
                        },
                        {
                          "key": "working_hours[0][day_of_week]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[0][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[0][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[0][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[1][day_of_week]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[1][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[1][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[1][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[2][day_of_week]",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[2][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[2][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[2][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[3][day_of_week]",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[3][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[3][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[3][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[4][day_of_week]",
                          "value": "4",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[4][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[4][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[4][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[5][day_of_week]",
                          "value": "5",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[5][is_working]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][day_of_week]",
                          "value": "6",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[6][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[6][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "slot_duration",
                          "value": "60",
                          "type": "text",
                          "description": "required · required|Rule::enum(SlotDuration::class) (30,60,90,120) · مدة الفترة · source: GET {{base_url}}provider/lookups/slot-durations"
                        },
                        {
                          "key": "slot_capacity",
                          "value": "18",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:100 · السعة لكل فترة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "18",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث بيانات الفرع\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BR-010\",\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n    \"name_ar\": \"فرع جدة\",\n    \"name_en\": \"Jeddah Branch\",\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    \"district\": {\n      \"id\": 8,\n      \"name\": \"البلد\"\n    },\n    \"phone\": \"0126677777\",\n    \"address\": \"حي الروضة، شارع التحلية\",\n    \"address_ar\": \"حي الروضة، شارع التحلية\",\n    \"address_en\": \"Al Rawdah, Tahlia St\",\n    \"lat\": 21.561,\n    \"lng\": 39.1525,\n    \"image\": \"http://help.test/uploads/branches/photo.png\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"slot_duration\": 60,\n    \"slot_capacity\": 18,\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"دم كامل\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"صفائح دموية\"\n      }\n    ],\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"الأحد\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"الاثنين\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"الثلاثاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"الأربعاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"الخميس\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"الجمعة\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"السبت\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"upcoming_closures_alert\": null,\n    \"current_bookings\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"عرض\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تعطيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/10/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "18",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Branch updated\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BR-010\",\n    \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n    \"name_ar\": \"فرع جدة\",\n    \"name_en\": \"Jeddah Branch\",\n    \"city\": {\n      \"id\": 2,\n      \"name\": \"Jeddah\"\n    },\n    \"district\": {\n      \"id\": 8,\n      \"name\": \"Al Balad\"\n    },\n    \"phone\": \"0126677777\",\n    \"address\": \"Al Rawdah, Tahlia St\",\n    \"address_ar\": \"حي الروضة، شارع التحلية\",\n    \"address_en\": \"Al Rawdah, Tahlia St\",\n    \"lat\": 21.561,\n    \"lng\": 39.1525,\n    \"image\": \"http://help.test/uploads/branches/photo.png\",\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"slot_duration\": 60,\n    \"slot_capacity\": 18,\n    \"donation_types\": [\n      {\n        \"id\": 1,\n        \"name\": \"Whole Blood\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Platelets\"\n      }\n    ],\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"Sunday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"Monday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"Tuesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"Wednesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"Thursday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"Friday\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"Saturday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"upcoming_closures_alert\": null,\n    \"current_bookings\": 0,\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"View\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/10/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (same as store)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل الاسم مطلوب. (and 12 more errors)\",\n  \"errors\": {\n    \"name\": [\n      \"الحقل الاسم مطلوب.\"\n    ],\n    \"name.ar\": [\n      \"الحقل الاسم بالعربية مطلوب.\"\n    ],\n    \"city_id\": [\n      \"الحقل المدينة مطلوب.\"\n    ],\n    \"phone\": [\n      \"الحقل الهاتف مطلوب.\"\n    ],\n    \"address\": [\n      \"الحقل العنوان مطلوب.\"\n    ],\n    \"address.ar\": [\n      \"الحقل address.ar مطلوب.\"\n    ],\n    \"lat\": [\n      \"الحقل خط العرض مطلوب.\"\n    ],\n    \"lng\": [\n      \"الحقل خط الطول مطلوب.\"\n    ],\n    \"donation_type_ids\": [\n      \"الحقل donation type ids مطلوب.\"\n    ],\n    \"is_active\": [\n      \"الحقل الحالة مطلوب.\"\n    ],\n    \"slot_duration\": [\n      \"الحقل slot duration مطلوب.\"\n    ],\n    \"slot_capacity\": [\n      \"يجب أن تكون قيمة الحقل slot capacity مساوية أو أكبر لـ 1.\"\n    ],\n    \"working_hours\": [\n      \"الحقل working hours مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — ليس الحساب الرئيسي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "18",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"إدارة الفروع متاحة للحساب الرئيسي فقط\"\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "18",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "18",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "name[ar]",
                              "value": "فرع جدة",
                              "type": "text"
                            },
                            {
                              "key": "name[en]",
                              "value": "Jeddah Branch",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "18",
                              "type": "text"
                            },
                            {
                              "key": "city_id",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "district_id",
                              "value": "8",
                              "type": "text"
                            },
                            {
                              "key": "phone",
                              "value": "0126677777",
                              "type": "text"
                            },
                            {
                              "key": "address[ar]",
                              "value": "حي الروضة، شارع التحلية",
                              "type": "text"
                            },
                            {
                              "key": "address[en]",
                              "value": "Al Rawdah, Tahlia St",
                              "type": "text"
                            },
                            {
                              "key": "lat",
                              "value": "21.561",
                              "type": "text"
                            },
                            {
                              "key": "lng",
                              "value": "39.1525",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[0]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "donation_type_ids[1]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "is_active",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "toggle-branch-status",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"code\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"city\"); pm.expect(o).to.have.property(\"working_hours_text\"); pm.expect(o).to.have.property(\"slot_duration\"); pm.expect(o).to.have.property(\"slot_capacity\"); pm.expect(o).to.have.property(\"current_bookings\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/toggle-status",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "toggle-status"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nتفعيل/تعطيل فرع.\n\n## Screens\n- P82 Branch Management — provider (web) `2095:28637`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-28637&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-28637&scaling=scale-down&content-scaling=fixed)\n- G-P18 تفعيل/تعطيل (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches` · `employee.owner:branch`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يقلب `is_active`.\n2. التعطيل: يختفي من التطبيق ومن الحجز، **الحجوزات القائمة سارية**، موظفو الفرع لا يدخلون (توكناتهم تُحذف).\n\n**Status / state transitions:** `ActiveStatus` active ⇄ inactive.\n\n**Side effects (Laravel-first):**\n- Revoke tokens of the branch employees (job `RevokeBranchEmployeeTokens`).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.status_toggled` → ar «تم تحديث حالة الفرع» / en \"Branch status updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 403 | ليس owner | `branch.owner_only` | إدارة الفروع متاحة للحساب الرئيسي فقط | Only the main account can manage branches |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": []
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث حالة الفرع\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BR-010\",\n    \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n    \"city\": \"جدة\",\n    \"working_hours_text\": \"السبت – الخميس 08:00 – 20:00\",\n    \"slot_duration\": 60,\n    \"slot_capacity\": 18,\n    \"current_bookings\": 0,\n    \"status\": {\n      \"value\": \"inactive\",\n      \"label\": \"غير نشط\",\n      \"color\": \"#DC2626\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"عرض\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"تفعيل\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/10/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Branch status updated\",\n  \"data\": {\n    \"id\": 10,\n    \"code\": \"BR-010\",\n    \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n    \"city\": \"Jeddah\",\n    \"working_hours_text\": \"Saturday – Thursday 08:00 – 20:00\",\n    \"slot_duration\": 60,\n    \"slot_capacity\": 18,\n    \"current_bookings\": 0,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"view\",\n        \"label\": \"View\",\n        \"method\": \"GET\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"link\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"Edit\",\n        \"method\": \"PUT\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"toggle_status\",\n        \"label\": \"Deactivate\",\n        \"method\": \"POST\",\n        \"endpoint\": \"provider/branches/10/toggle-status\",\n        \"style\": \"warning\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/10\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 403 — ليس owner",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"إدارة الفروع متاحة للحساب الرئيسي فقط\"\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/toggle-status",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "toggle-status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-image",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"image\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/image",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "image"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nرفع صورة الفرع.\n\n## Screens\n- P86 Branch Details — «تغيير الصورة» — provider (web) `2095:32238`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Body (form-data)\n- `image` — required · required|image|mimes:jpg,jpeg,png|max:4096 · الصورة · example: `(file)`\n\n\n## Behaviour notes\n**Steps:**\n1. يستبدل وسائط `image` (Spatie single) — يرجع رابط الصورة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.image_updated` → ar «تم تحديث صورة الفرع» / en \"Branch image updated\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (image) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "image",
                          "type": "file",
                          "src": "docs/postman/_assets/sample.png",
                          "disabled": false,
                          "description": "required · required|image|mimes:jpg,jpeg,png|max:4096 · الصورة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/image",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "image"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "image",
                              "value": "(file)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تحديث صورة الفرع\",\n  \"data\": {\n    \"image\": \"http://help.test/uploads/branches/photo.png\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/image",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "image"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "image",
                              "value": "(file)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Branch image updated\",\n  \"data\": {\n    \"image\": \"http://help.test/uploads/branches/photo.png\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (image)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/image",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "image"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل الصورة مطلوب.\",\n  \"errors\": {\n    \"image\": [\n      \"الحقل الصورة مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/image",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "image"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "image",
                              "value": "(file)",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/image",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "image"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/image",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "image"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": []
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-working-hours",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"working_hours\"); pm.expect(o).to.have.property(\"affected_bookings_count\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/working-hours",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "working-hours"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعديل ساعات العمل الأسبوعية.\n\n## Screens\n- P86 Branch Details — مواعيد العمل الأسبوعية — provider (web) `2095:32238`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Body (form-data)\n- `working_hours[0][day_of_week]` — required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت) · example: `6`\n- `working_hours[0][is_working]` — required · required|boolean · يوم عمل/إجازة أسبوعية · example: `1`\n- `working_hours[0][opens_at]` — required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من · example: `08:00`\n- `working_hours[0][closes_at]` — required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى · example: `20:00`\n\n\n## Behaviour notes\n**Steps:**\n1. يستبدل الصفوف السبعة (`updateOrCreate` على `day_of_week`).\n2. لا يلغي حجوزات قائمة خارج الساعات الجديدة (تبقى صالحة)؛ يرجع `affected_bookings_count` للتحذير.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.hours_saved` → ar «تم حفظ مواعيد العمل» / en \"Working hours saved\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (working_hours) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n\n> الـ route هو `PUT {{base_url}}provider/branches/{id}/working-hours`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "working_hours[0][day_of_week]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[0][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[0][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[0][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[1][day_of_week]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[1][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[1][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[1][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[2][day_of_week]",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[2][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[2][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[2][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[3][day_of_week]",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[3][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[3][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[3][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[4][day_of_week]",
                          "value": "4",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[4][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[4][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[4][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[5][day_of_week]",
                          "value": "5",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[5][is_working]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][day_of_week]",
                          "value": "6",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[6][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[6][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/working-hours",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "working-hours"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ مواعيد العمل\",\n  \"data\": {\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"الأحد\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"الاثنين\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"الثلاثاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"الأربعاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"الخميس\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"الجمعة\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"السبت\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"affected_bookings_count\": 0\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/working-hours",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "working-hours"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Working hours saved\",\n  \"data\": {\n    \"working_hours\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"Sunday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"Monday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"Tuesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"Wednesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"Thursday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"Friday\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"Saturday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\"\n      }\n    ],\n    \"affected_bookings_count\": 0\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (working_hours)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/working-hours",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "working-hours"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن يحتوي الحقل working hours على 7 عنصرٍ/عناصر بالظبط\",\n  \"errors\": {\n    \"working_hours\": [\n      \"يجب أن يحتوي الحقل working hours على 7 عنصرٍ/عناصر بالظبط\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/working-hours",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "working-hours"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/working-hours",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "working-hours"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/working-hours",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "working-hours"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-capacity",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"slot_duration\"); pm.expect(o).to.have.property(\"slot_capacity\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/capacity",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "capacity"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nتعديل سعة الفرع الافتراضية.\n\n## Screens\n- P84 Branches v02 — «تعديل السعة» — provider (web) `2095:29383`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29383&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29383&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Body (form-data)\n- `slot_duration` — required · required|Rule::enum(SlotDuration::class) · مدة الفترة · source: GET {{base_url}}provider/lookups/slot-durations · example: `60`\n- `slot_capacity` — required · required|integer|min:1|max:100 · السعة لكل فترة · example: `15`\n\n\n## Behaviour notes\n**Steps:**\n1. يحدّث `slot_duration`, `slot_capacity` الافتراضيين.\n2. التغيير لا يمس overrides ولا الحجوزات القائمة.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.capacity_saved` → ar «تم حفظ السعة» / en \"Capacity saved\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (slot_duration, slot_capacity) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n\n> الـ route هو `PUT {{base_url}}provider/branches/{id}/capacity`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "slot_duration",
                          "value": "60",
                          "type": "text",
                          "description": "required · required|Rule::enum(SlotDuration::class) · مدة الفترة · source: GET {{base_url}}provider/lookups/slot-durations"
                        },
                        {
                          "key": "slot_capacity",
                          "value": "15",
                          "type": "text",
                          "description": "required · required|integer|min:1|max:100 · السعة لكل فترة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/capacity",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "capacity"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ السعة\",\n  \"data\": {\n    \"slot_duration\": {\n      \"value\": 60,\n      \"label\": \"60 دقيقة\"\n    },\n    \"slot_capacity\": 15\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/capacity",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "capacity"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Capacity saved\",\n  \"data\": {\n    \"slot_duration\": {\n      \"value\": 60,\n      \"label\": \"60 minutes\"\n    },\n    \"slot_capacity\": 15\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (slot_duration, slot_capacity)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/capacity",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "capacity"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "45",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "0",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد slot duration غير صالح. (and 1 more error)\",\n  \"errors\": {\n    \"slot_duration\": [\n      \"حقل المحدد slot duration غير صالح.\"\n    ],\n    \"slot_capacity\": [\n      \"يجب أن تكون قيمة الحقل slot capacity مساوية أو أكبر لـ 1.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/capacity",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "capacity"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/capacity",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "capacity"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/capacity",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "capacity"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "slots-preview",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"working_days\"); pm.expect(o).to.have.property(\"slots_per_week\"); pm.expect(o).to.have.property(\"weekly_capacity\"); pm.expect(o).to.have.property(\"days\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/slots-preview",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "slots-preview"
                      ]
                    },
                    "description": "## Purpose\nمعاينة الفترات قبل حفظ الفرع.\n\n## Screens\n- P89 Add Branch / Step 3 — «48 فترة» + ملخص الفرع — provider (web) `2095:33273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Body (form-data)\n- `working_hours[0][day_of_week]` — required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت) · example: `6`\n- `working_hours[0][is_working]` — required · required|boolean · يوم عمل/إجازة أسبوعية · example: `1`\n- `working_hours[0][opens_at]` — required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من · example: `08:00`\n- `working_hours[0][closes_at]` — required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى · example: `20:00`\n- `slot_duration` — required · required|Rule::enum(SlotDuration::class) · المدة · example: `60`\n- `slot_capacity` — required · required|integer|min:1 · السعة · example: `15`\n\n\n## Behaviour notes\n**Steps:**\n1. حساب نقي بلا حفظ: من ساعات الأسبوع + المدة + السعة → عدد الفترات أسبوعياً/يومياً + السعة الأسبوعية.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (working_hours, slot_duration, slot_capacity) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "working_hours[0][day_of_week]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[0][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[0][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[0][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[1][day_of_week]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[1][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[1][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[1][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[2][day_of_week]",
                          "value": "2",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[2][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[2][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[2][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[3][day_of_week]",
                          "value": "3",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[3][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[3][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[3][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[4][day_of_week]",
                          "value": "4",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[4][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[4][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[4][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "working_hours[5][day_of_week]",
                          "value": "5",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[5][is_working]",
                          "value": "0",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][day_of_week]",
                          "value": "6",
                          "type": "text",
                          "description": "required · required|array size:7; working_hours.*.day_of_week = Rule::enum(WeekDay::class) distinct · اليوم (0=الأحد…6=السبت)"
                        },
                        {
                          "key": "working_hours[6][is_working]",
                          "value": "1",
                          "type": "text",
                          "description": "required · required|boolean · يوم عمل/إجازة أسبوعية"
                        },
                        {
                          "key": "working_hours[6][opens_at]",
                          "value": "08:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:working_hours.*.is_working,1|date_format:H:i · من"
                        },
                        {
                          "key": "working_hours[6][closes_at]",
                          "value": "20:00",
                          "type": "text",
                          "description": "required_if is_working · nullable|required_if:…|date_format:H:i|after:working_hours.*.opens_at · إلى"
                        },
                        {
                          "key": "slot_duration",
                          "value": "60",
                          "type": "text",
                          "description": "required · required|Rule::enum(SlotDuration::class) · المدة"
                        },
                        {
                          "key": "slot_capacity",
                          "value": "15",
                          "type": "text",
                          "description": "required · required|integer|min:1 · السعة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/slots-preview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "slots-preview"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"working_days\": 6,\n    \"slots_per_week\": 72,\n    \"weekly_capacity\": 1080,\n    \"days\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"الأحد\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"الاثنين\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"الثلاثاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"الأربعاء\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"الخميس\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"الجمعة\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null,\n        \"slots\": 0,\n        \"capacity\": 0\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"السبت\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/slots-preview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "slots-preview"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"working_days\": 6,\n    \"slots_per_week\": 72,\n    \"weekly_capacity\": 1080,\n    \"days\": [\n      {\n        \"day\": {\n          \"value\": 0,\n          \"label\": \"Sunday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 1,\n          \"label\": \"Monday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 2,\n          \"label\": \"Tuesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 3,\n          \"label\": \"Wednesday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 4,\n          \"label\": \"Thursday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      },\n      {\n        \"day\": {\n          \"value\": 5,\n          \"label\": \"Friday\"\n        },\n        \"is_working\": false,\n        \"opens_at\": null,\n        \"closes_at\": null,\n        \"slots\": 0,\n        \"capacity\": 0\n      },\n      {\n        \"day\": {\n          \"value\": 6,\n          \"label\": \"Saturday\"\n        },\n        \"is_working\": true,\n        \"opens_at\": \"08:00\",\n        \"closes_at\": \"20:00\",\n        \"slots\": 12,\n        \"capacity\": 180\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (working_hours, slot_duration, slot_capacity)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/slots-preview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "slots-preview"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "slot_duration",
                              "value": "7",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد slot duration غير صالح. (and 2 more errors)\",\n  \"errors\": {\n    \"slot_duration\": [\n      \"حقل المحدد slot duration غير صالح.\"\n    ],\n    \"slot_capacity\": [\n      \"الحقل slot capacity مطلوب.\"\n    ],\n    \"working_hours\": [\n      \"الحقل working hours مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/slots-preview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "slots-preview"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/slots-preview",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "slots-preview"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "working_hours[0][day_of_week]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[0][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][day_of_week]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[1][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][day_of_week]",
                              "value": "2",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[2][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][day_of_week]",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[3][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][day_of_week]",
                              "value": "4",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[4][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][day_of_week]",
                              "value": "5",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[5][is_working]",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][day_of_week]",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][is_working]",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][opens_at]",
                              "value": "08:00",
                              "type": "text"
                            },
                            {
                              "key": "working_hours[6][closes_at]",
                              "value": "20:00",
                              "type": "text"
                            },
                            {
                              "key": "slot_duration",
                              "value": "60",
                              "type": "text"
                            },
                            {
                              "key": "slot_capacity",
                              "value": "15",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-closures",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"rows\", () => { const l = pm.response.json().data.data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0];  } });",
                          "pm.test(\"paginated\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"pagination\"); });",
                          "pm.test(\"pagination\", () => { pm.expect(pm.response.json().data).to.have.property(\"pagination\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/closures",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "closures"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ],
                      "query": [
                        {
                          "key": "status",
                          "value": "scheduled",
                          "description": "optional · nullable|in:scheduled,closed,ended · فلتر الحالة",
                          "disabled": true
                        },
                        {
                          "key": "page",
                          "value": "1",
                          "description": "optional ·  · ",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nقائمة إجازات الفرع.\n\n## Screens\n- P86 Branch Details — الإجازات والإغلاقات + فلتر — provider (web) `2095:32238`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Query params\n- `status` — optional · nullable|in:scheduled,closed,ended · فلتر الحالة · example: `scheduled`\n- `page` — optional ·  ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. إغلاقات الفرع مرتبة بالتاريخ؛ `status` محسوب (`ClosureStatus`): `scheduled` (مستقبلي) · `closed` (اليوم) · `ended` (ماضٍ).\n2. لكل صف: التاريخ، اليوم، السبب، الملاحظات، الحالة، `action_buttons` [`delete` متاح للمستقبلية فقط].\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, getPaginationData…)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "scheduled",
                              "description": "optional · nullable|in:scheduled,closed,ended · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"data\": [],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 0,\n      \"last_page\": 1,\n      \"from\": null,\n      \"to\": null\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "scheduled",
                              "description": "optional · nullable|in:scheduled,closed,ended · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"data\": [],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"per_page\": 15,\n      \"total\": 0,\n      \"last_page\": 1,\n      \"from\": null,\n      \"to\": null\n    }\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (status)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures?status=nope",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "scheduled",
                              "description": "optional · nullable|in:scheduled,closed,ended · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الحالة غير صالح.\",\n  \"errors\": {\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "scheduled",
                              "description": "optional · nullable|in:scheduled,closed,ended · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "scheduled",
                              "description": "optional · nullable|in:scheduled,closed,ended · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "status",
                              "value": "scheduled",
                              "description": "optional · nullable|in:scheduled,closed,ended · فلتر الحالة",
                              "disabled": true
                            },
                            {
                              "key": "page",
                              "value": "1",
                              "description": "optional ·  · ",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "create-branch-closure",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"day\"); pm.expect(o).to.have.property(\"reason\"); pm.expect(o).to.have.property(\"notes\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"action_buttons\"); });",
                          "{ const v = pm.response.json().data.id; if (v) { pm.collectionVariables.set(\"provider_closure_id\", v); pm.environment.set(\"provider_closure_id\", v); } }"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/closures",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "closures"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nإغلاق الفرع في تاريخ.\n\n## Screens\n- P87 Add Closure Date (modal) — provider (web) `2095:32957`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32957&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32957&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Body (form-data)\n- `date` — required · required|date_format:Y-m-d|after_or_equal:today|unique per branch · التاريخ · example: `2026-11-06`\n- `reason` — required · required|Rule::enum(ClosureReason::class) · سبب الإغلاق · source: GET {{base_url}}provider/lookups/closure-reasons · example: `maintenance`\n- `notes` — optional · nullable|string|max:500 · ملاحظات · example: `صيانة دورية لأجهزة الفصل`\n\n\n## Behaviour notes\n**Steps:**\n1. يرفض لو في اليوم حجوزات **مؤكدة** (409 بالعدد) — على البنك رفضها/التواصل أولاً.\n2. ينشئ `branch_closures` (unique branch+date) + `created_by`.\n3. **يلغي الحجوزات المعلّقة (pending)** لذلك اليوم (`cancel_source=closure`) مع إشعار كل متبرع.\n\n**Status / state transitions:** appointments (pending, same day) → `cancelled` (`CancelSource::CLOSURE`).\n\n**Side effects (Laravel-first):**\n- `AppointmentCancelled` events (queued notifications).\n\n**Notifications fired** (`App\\Enums\\NotificationType` → `database` always + FCM via `DeviceAwareFcmChannel` in the **recipient's** `lang`; users get push only when `is_notify=true`):\n\n| type | recipient | title ar / en | body ar | payload | opens screen |\n|---|---|---|---|---|---|\n| `appointment_cancelled` | المتبرع صاحب الحجز المعلّق | تم إلغاء موعدك / Appointment cancelled | أُلغي موعدك يوم :date في :branch (:reason) | appointment_id | U62 |\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.closure_added` → ar «تمت إضافة الإجازة» / en \"Closure added\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | في اليوم مواعيد مؤكدة | `branch.closure_has_confirmed` | لا يمكن إضافة إجازة ليوم فيه مواعيد مؤكدة (:count) | Can't close a day with confirmed appointments (:count) |\n| 422 | فشل التحقق (date (duplicate), reason) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "date",
                          "value": "{{d39}}",
                          "type": "text",
                          "description": "required · required|date_format:Y-m-d|after_or_equal:today|unique per branch · التاريخ"
                        },
                        {
                          "key": "reason",
                          "value": "maintenance",
                          "type": "text",
                          "description": "required · required|Rule::enum(ClosureReason::class) · سبب الإغلاق · source: GET {{base_url}}provider/lookups/closure-reasons"
                        },
                        {
                          "key": "notes",
                          "value": "صيانة دورية لأجهزة الفصل",
                          "type": "text",
                          "description": "optional · nullable|string|max:500 · ملاحظات"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-11-27",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "maintenance",
                              "type": "text"
                            },
                            {
                              "key": "notes",
                              "value": "صيانة دورية لأجهزة الفصل",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تمت إضافة الإجازة\",\n  \"data\": {\n    \"id\": 6,\n    \"date\": \"2026-11-27\",\n    \"day\": {\n      \"value\": 5,\n      \"label\": \"الجمعة\"\n    },\n    \"reason\": {\n      \"value\": \"maintenance\",\n      \"label\": \"صيانة الفرع\"\n    },\n    \"notes\": \"صيانة دورية لأجهزة الفصل\",\n    \"status\": {\n      \"value\": \"scheduled\",\n      \"label\": \"مجدول\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"delete\",\n        \"label\": \"حذف\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/1/closures/6\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-11-28",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "official_holiday",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Closure added\",\n  \"data\": {\n    \"id\": 7,\n    \"date\": \"2026-11-28\",\n    \"day\": {\n      \"value\": 6,\n      \"label\": \"Saturday\"\n    },\n    \"reason\": {\n      \"value\": \"official_holiday\",\n      \"label\": \"Official holiday\"\n    },\n    \"notes\": null,\n    \"status\": {\n      \"value\": \"scheduled\",\n      \"label\": \"Scheduled\",\n      \"color\": \"#0369A1\",\n      \"bg_color\": \"#E0F2FE\"\n    },\n    \"action_buttons\": [\n      {\n        \"key\": \"delete\",\n        \"label\": \"Delete\",\n        \"method\": \"DELETE\",\n        \"endpoint\": \"provider/branches/1/closures/7\",\n        \"style\": \"danger\",\n        \"confirm\": true,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 409 — في اليوم مواعيد مؤكدة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-10-19",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "maintenance",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن إضافة إجازة ليوم فيه مواعيد مؤكدة (5)\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (date (duplicate), reason)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-11-27",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "nope",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"قيمة الحقل التاريخ مُستخدمة من قبل (and 1 more error)\",\n  \"errors\": {\n    \"date\": [\n      \"قيمة الحقل التاريخ مُستخدمة من قبل\"\n    ],\n    \"reason\": [\n      \"حقل المحدد reason غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-11-27",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "maintenance",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-11-27",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "maintenance",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "date",
                              "value": "2026-11-27",
                              "type": "text"
                            },
                            {
                              "key": "reason",
                              "value": "maintenance",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "delete-branch-closure",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/closures/{closure_id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "closures",
                        "{closure_id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        },
                        {
                          "key": "closure_id",
                          "value": "{{provider_closure_id}}",
                          "description": "required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures"
                        }
                      ]
                    },
                    "description": "## Purpose\nحذف إجازة مستقبلية.\n\n## Screens\n- P86 Branch Details — حذف إجازة (المستقبلية) — provider (web) `2095:32238`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32238&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n- `closure_id` — required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures · example: `2`\n\n\n## Behaviour notes\n**Steps:**\n1. المستقبلية فقط (`date > today`)؛ الماضية/اليوم → 409.\n2. الحجوزات الملغاة بسبب الإغلاق **لا تُستعاد**.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.closure_deleted` → ar «تم حذف الإجازة» / en \"Closure deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | إجازة ماضية/اليوم | `branch.closure_not_deletable` | لا يمكن حذف إجازة بدأت أو انتهت | Past or current closures cannot be deleted |\n| 404 | إجازة لفرع آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures/{closure_id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures",
                            "{closure_id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            },
                            {
                              "key": "closure_id",
                              "value": "{{provider_closure_id}}",
                              "description": "required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الإجازة\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures/{closure_id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures",
                            "{closure_id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            },
                            {
                              "key": "closure_id",
                              "value": "{{provider_closure_id}}",
                              "description": "required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Closure deleted\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 409 — إجازة ماضية/اليوم",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures/{closure_id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures",
                            "{closure_id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            },
                            {
                              "key": "closure_id",
                              "value": "{{provider_closure_id}}",
                              "description": "required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن حذف إجازة بدأت أو انتهت\"\n}"
                    },
                    {
                      "name": "❌ 404 — إجازة لفرع آخر",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures/{closure_id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures",
                            "{closure_id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            },
                            {
                              "key": "closure_id",
                              "value": "{{provider_closure_id}}",
                              "description": "required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures/{closure_id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures",
                            "{closure_id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            },
                            {
                              "key": "closure_id",
                              "value": "{{provider_closure_id}}",
                              "description": "required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/closures/{closure_id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "closures",
                            "{closure_id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            },
                            {
                              "key": "closure_id",
                              "value": "{{provider_closure_id}}",
                              "description": "required · closure of this branch · الإجازة · source: GET {{base_url}}provider/branches/{id}/closures"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-slots",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"day board\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"date\"); pm.expect(o).to.have.property(\"totals\"); pm.expect(o).to.have.property(\"slots\"); });",
                          "pm.test(\"totals\", () => { const o = pm.response.json().data.totals; pm.expect(o).to.have.property(\"capacity\"); pm.expect(o).to.have.property(\"booked\"); pm.expect(o).to.have.property(\"available\"); pm.expect(o).to.have.property(\"occupancy_percent\"); });",
                          "pm.test(\"slots (capacity, seats held, colored status)\", () => { const l = pm.response.json().data.slots; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"start_time\"); pm.expect(o).to.have.property(\"end_time\"); pm.expect(o).to.have.property(\"capacity\"); pm.expect(o).to.have.property(\"booked\"); pm.expect(o).to.have.property(\"available\"); pm.expect(o).to.have.property(\"occupancy_percent\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"is_overridden\"); } });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "GET",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/slots",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "slots"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ],
                      "query": [
                        {
                          "key": "date",
                          "value": "{{d0}}",
                          "description": "required · required|date_format:Y-m-d · اليوم",
                          "disabled": false
                        }
                      ]
                    },
                    "description": "## Purpose\nإشغال فترات يوم محدد للفرع.\n\n## Screens\n- P84 Branches v02 — لوحة «السعة الاستيعابية والفترات الزمنية» — provider (web) `2095:29383`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29383&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29383&scaling=scale-down&content-scaling=fixed)\n- P21 Appointments v02 — modal «تعديل الموعد» — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches|appointments`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Query params\n- `date` — required · required|date_format:Y-m-d · اليوم · example: `2026-10-19`\n\n\n## Behaviour notes\n**Steps:**\n1. محرك الفترات نفسه (ساعات + مدة + overrides + إغلاق + إشغال pending+confirmed).\n2. لكل فترة: `start_time`, `end_time`, `capacity`, `booked`, `available`, `occupancy_percent`, `status` (`SlotStatus` ملوّن)، `is_overridden`.\n3. مسموح لقسمي branches **أو** appointments (`employee.section:branches,appointments`).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (date) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches|appointments` (`employee.section:branches|appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\",\"appointments\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots?date=2026-10-20",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "required · required|date_format:Y-m-d · اليوم",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"totals\": {\n      \"capacity\": 113,\n      \"booked\": 15,\n      \"available\": 98,\n      \"occupancy_percent\": 13\n    },\n    \"slots\": [\n      {\n        \"start_time\": \"08:00\",\n        \"end_time\": \"08:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"08:30\",\n        \"end_time\": \"09:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"09:00\",\n        \"end_time\": \"09:30\",\n        \"capacity\": 5,\n        \"booked\": 5,\n        \"available\": 0,\n        \"occupancy_percent\": 100,\n        \"status\": {\n          \"value\": \"full\",\n          \"label\": \"ممتلئ\",\n          \"color\": \"#BB4D00\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"09:30\",\n        \"end_time\": \"10:00\",\n        \"capacity\": 5,\n        \"booked\": 1,\n        \"available\": 4,\n        \"occupancy_percent\": 20,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"10:00\",\n        \"end_time\": \"10:30\",\n        \"capacity\": 5,\n        \"booked\": 4,\n        \"available\": 1,\n        \"occupancy_percent\": 80,\n        \"status\": {\n          \"value\": \"near_full\",\n          \"label\": \"قارب الامتلاء\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"10:30\",\n        \"end_time\": \"11:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"11:00\",\n        \"end_time\": \"11:30\",\n        \"capacity\": 3,\n        \"booked\": 3,\n        \"available\": 0,\n        \"occupancy_percent\": 100,\n        \"status\": {\n          \"value\": \"full\",\n          \"label\": \"ممتلئ\",\n          \"color\": \"#BB4D00\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overridden\": true\n      },\n      {\n        \"start_time\": \"11:30\",\n        \"end_time\": \"12:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"12:00\",\n        \"end_time\": \"12:30\",\n        \"capacity\": 0,\n        \"booked\": 0,\n        \"available\": 0,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"مغلق\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        },\n        \"is_overridden\": true\n      },\n      {\n        \"start_time\": \"12:30\",\n        \"end_time\": \"13:00\",\n        \"capacity\": 5,\n        \"booked\": 1,\n        \"available\": 4,\n        \"occupancy_percent\": 20,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"13:00\",\n        \"end_time\": \"13:30\",\n        \"capacity\": 5,\n        \"booked\": 1,\n        \"available\": 4,\n        \"occupancy_percent\": 20,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"13:30\",\n        \"end_time\": \"14:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"14:00\",\n        \"end_time\": \"14:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"14:30\",\n        \"end_time\": \"15:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"15:00\",\n        \"end_time\": \"15:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"15:30\",\n        \"end_time\": \"16:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"16:00\",\n        \"end_time\": \"16:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"16:30\",\n        \"end_time\": \"17:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"17:00\",\n        \"end_time\": \"17:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"17:30\",\n        \"end_time\": \"18:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"18:00\",\n        \"end_time\": \"18:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"18:30\",\n        \"end_time\": \"19:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"19:00\",\n        \"end_time\": \"19:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"19:30\",\n        \"end_time\": \"20:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"متاح\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots?date=2026-10-20",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "required · required|date_format:Y-m-d · اليوم",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": {\n    \"date\": \"2026-10-20\",\n    \"totals\": {\n      \"capacity\": 113,\n      \"booked\": 15,\n      \"available\": 98,\n      \"occupancy_percent\": 13\n    },\n    \"slots\": [\n      {\n        \"start_time\": \"08:00\",\n        \"end_time\": \"08:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"08:30\",\n        \"end_time\": \"09:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"09:00\",\n        \"end_time\": \"09:30\",\n        \"capacity\": 5,\n        \"booked\": 5,\n        \"available\": 0,\n        \"occupancy_percent\": 100,\n        \"status\": {\n          \"value\": \"full\",\n          \"label\": \"Full\",\n          \"color\": \"#BB4D00\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"09:30\",\n        \"end_time\": \"10:00\",\n        \"capacity\": 5,\n        \"booked\": 1,\n        \"available\": 4,\n        \"occupancy_percent\": 20,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"10:00\",\n        \"end_time\": \"10:30\",\n        \"capacity\": 5,\n        \"booked\": 4,\n        \"available\": 1,\n        \"occupancy_percent\": 80,\n        \"status\": {\n          \"value\": \"near_full\",\n          \"label\": \"Almost full\",\n          \"color\": \"#B45309\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"10:30\",\n        \"end_time\": \"11:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"11:00\",\n        \"end_time\": \"11:30\",\n        \"capacity\": 3,\n        \"booked\": 3,\n        \"available\": 0,\n        \"occupancy_percent\": 100,\n        \"status\": {\n          \"value\": \"full\",\n          \"label\": \"Full\",\n          \"color\": \"#BB4D00\",\n          \"bg_color\": \"#FFFBEB\"\n        },\n        \"is_overridden\": true\n      },\n      {\n        \"start_time\": \"11:30\",\n        \"end_time\": \"12:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"12:00\",\n        \"end_time\": \"12:30\",\n        \"capacity\": 0,\n        \"booked\": 0,\n        \"available\": 0,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"closed\",\n          \"label\": \"Closed\",\n          \"color\": \"#62748E\",\n          \"bg_color\": \"#F1F5F9\"\n        },\n        \"is_overridden\": true\n      },\n      {\n        \"start_time\": \"12:30\",\n        \"end_time\": \"13:00\",\n        \"capacity\": 5,\n        \"booked\": 1,\n        \"available\": 4,\n        \"occupancy_percent\": 20,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"13:00\",\n        \"end_time\": \"13:30\",\n        \"capacity\": 5,\n        \"booked\": 1,\n        \"available\": 4,\n        \"occupancy_percent\": 20,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"13:30\",\n        \"end_time\": \"14:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"14:00\",\n        \"end_time\": \"14:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"14:30\",\n        \"end_time\": \"15:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"15:00\",\n        \"end_time\": \"15:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"15:30\",\n        \"end_time\": \"16:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"16:00\",\n        \"end_time\": \"16:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"16:30\",\n        \"end_time\": \"17:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"17:00\",\n        \"end_time\": \"17:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"17:30\",\n        \"end_time\": \"18:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"18:00\",\n        \"end_time\": \"18:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"18:30\",\n        \"end_time\": \"19:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"19:00\",\n        \"end_time\": \"19:30\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      },\n      {\n        \"start_time\": \"19:30\",\n        \"end_time\": \"20:00\",\n        \"capacity\": 5,\n        \"booked\": 0,\n        \"available\": 5,\n        \"occupancy_percent\": 0,\n        \"status\": {\n          \"value\": \"available\",\n          \"label\": \"Available\",\n          \"color\": \"#059669\",\n          \"bg_color\": \"#ECFDF5\"\n        },\n        \"is_overridden\": false\n      }\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (date)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "required · required|date_format:Y-m-d · اليوم",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"الحقل التاريخ مطلوب.\",\n  \"errors\": {\n    \"date\": [\n      \"الحقل التاريخ مطلوب.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots?date=2026-10-20",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "required · required|date_format:Y-m-d · اليوم",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots?date=2026-10-20",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "required · required|date_format:Y-m-d · اليوم",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches|appointments (employee.section:branches|appointments)",
                      "originalRequest": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots?date=2026-10-20",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ],
                          "query": [
                            {
                              "key": "date",
                              "value": "{{d0}}",
                              "description": "required · required|date_format:Y-m-d · اليوم",
                              "disabled": false
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\",\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "branch-slot-override",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"saved slot\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"start_time\"); pm.expect(o).to.have.property(\"end_time\"); pm.expect(o).to.have.property(\"capacity\"); pm.expect(o).to.have.property(\"booked\"); pm.expect(o).to.have.property(\"available\"); pm.expect(o).to.have.property(\"occupancy_percent\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"is_overridden\"); });",
                          "pm.test(\"override flagged + colored status\", () => { const o = pm.response.json().data; pm.expect(o.is_overridden).to.eql(true); pm.expect(o.status).to.have.property(\"bg_color\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}/slots",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}",
                        "slots"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\noverride سعة/إغلاق فترة في تاريخ.\n\n## Screens\n- P21 Appointments v02 — modal «تعديل الموعد» — provider (web) `450:3751`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=450-3751&scaling=scale-down&content-scaling=fixed)\n- P84 Branches v02 — «إضافة فترة» — provider (web) `2095:29383`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29383&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29383&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches|appointments`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n### Body (form-data)\n- `date` — required · required|date_format:Y-m-d|after_or_equal:today · التاريخ · example: `2026-10-19`\n- `start_time` — required · required|date_format:H:i (must align with slot grid) · بداية الفترة · example: `08:30`\n- `capacity` — required · required|integer|min:0|max:100|gte:booked · السعة القصوى (+/−) · example: `6`\n- `status` — required · required|in:available,closed · حالة الموعد (متاح/مغلق) · example: `available`\n\n\n## Behaviour notes\n**Steps:**\n1. `updateOrCreate` على (`branch_id`,`date`,`start_time`) في `branch_slot_overrides` + `created_by`=الموظف.\n2. السعة القصوى لا تقل عن المحجوز (pending+confirmed) → 422 «لا يمكن أن تقل السعة عن عدد المحجوز (N)».\n3. «ممتلئ» حالة تلقائية (لا تُرسل)؛ الحالة المرسلة `available|closed` → `is_closed`.\n4. إغلاق فترة عليها حجوزات **لا** يلغيها (تبقى صالحة) — التحذير في `booked`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman: acts on the branch created in this folder ({{provider_branch_id}}: 60-minute slots from 08:00), so `start_time` is `08:00`.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.slot_saved` → ar «تم حفظ تعديلات الفترة» / en \"Slot changes saved\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | السعة أقل من المحجوز | `branch.capacity_below_booked` | لا يمكن أن تقل السعة عن عدد المحجوز (:booked) | Capacity can't be below booked (:booked) |\n| 422 | فشل التحقق (date, start_time, status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches|appointments` (`employee.section:branches|appointments`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\",\"appointments\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |\n\n> الـ route هو `PUT {{base_url}}provider/branches/{id}/slots`؛ لأن PHP لا يقرأ multipart على PUT/DELETE نرسله `POST` مع الحقل `_method=PUT` (Laravel يحوّله).",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "_method",
                          "value": "PUT",
                          "type": "text",
                          "description": "required · method spoofing - the route is PUT, but PHP cannot read a multipart body on PUT/DELETE, so form-data is sent as POST with this field"
                        },
                        {
                          "key": "date",
                          "value": "{{d1}}",
                          "type": "text",
                          "description": "required · required|date_format:Y-m-d|after_or_equal:today · التاريخ"
                        },
                        {
                          "key": "start_time",
                          "value": "08:00",
                          "type": "text",
                          "description": "required · required|date_format:H:i (must align with slot grid) · بداية الفترة"
                        },
                        {
                          "key": "capacity",
                          "value": "40",
                          "type": "text",
                          "description": "required · required|integer|min:0|max:100|gte:booked · السعة القصوى (+/−)"
                        },
                        {
                          "key": "status",
                          "value": "available",
                          "type": "text",
                          "description": "required · required|in:available,closed · حالة الموعد (متاح/مغلق)"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            },
                            {
                              "key": "capacity",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "status",
                              "value": "available",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حفظ تعديلات الفترة\",\n  \"data\": {\n    \"start_time\": \"08:30\",\n    \"end_time\": \"09:00\",\n    \"capacity\": 6,\n    \"booked\": 0,\n    \"available\": 6,\n    \"occupancy_percent\": 0,\n    \"status\": {\n      \"value\": \"available\",\n      \"label\": \"متاح\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"is_overridden\": true\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            },
                            {
                              "key": "capacity",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "status",
                              "value": "available",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Slot changes saved\",\n  \"data\": {\n    \"start_time\": \"08:30\",\n    \"end_time\": \"09:00\",\n    \"capacity\": 6,\n    \"booked\": 0,\n    \"available\": 6,\n    \"occupancy_percent\": 0,\n    \"status\": {\n      \"value\": \"available\",\n      \"label\": \"Available\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"is_overridden\": true\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — السعة أقل من المحجوز",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-18",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "13:30",
                              "type": "text"
                            },
                            {
                              "key": "capacity",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "status",
                              "value": "available",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن أن تقل السعة عن عدد المحجوز (2)\",\n  \"errors\": {\n    \"capacity\": [\n      \"لا يمكن أن تقل السعة عن عدد المحجوز (2)\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (date, start_time, status)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2020-01-01",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "8.30",
                              "type": "text"
                            },
                            {
                              "key": "capacity",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "status",
                              "value": "nope",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل التاريخ يجب ان يكون تاريخ بعد او مطابق لتاريخ today. (and 2 more errors)\",\n  \"errors\": {\n    \"date\": [\n      \"حقل التاريخ يجب ان يكون تاريخ بعد او مطابق لتاريخ today.\"\n    ],\n    \"start_time\": [\n      \"حقل وقت البداية يجب ان يتطابق مع الصيغة H:i.\"\n    ],\n    \"status\": [\n      \"حقل المحدد الحالة غير صالح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            },
                            {
                              "key": "capacity",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "status",
                              "value": "available",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            },
                            {
                              "key": "capacity",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "status",
                              "value": "available",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches|appointments (employee.section:branches|appointments) → {\"key\"",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}/slots",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}",
                            "slots"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "_method",
                              "value": "PUT",
                              "type": "text"
                            },
                            {
                              "key": "date",
                              "value": "2026-10-20",
                              "type": "text"
                            },
                            {
                              "key": "start_time",
                              "value": "08:30",
                              "type": "text"
                            },
                            {
                              "key": "capacity",
                              "value": "6",
                              "type": "text"
                            },
                            {
                              "key": "status",
                              "value": "available",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\",\n      \"appointments\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "delete-branch",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"no payload (data is null)\", () => pm.expect(pm.response.json().data).to.eql(null));",
                          "pm.collectionVariables.unset(\"provider_branch_id\"); pm.environment.unset(\"provider_branch_id\");"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}provider/branches/{id}",
                      "host": [
                        "{{base_url}}provider"
                      ],
                      "path": [
                        "branches",
                        "{id}"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "{{provider_branch_id}}",
                          "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                        }
                      ]
                    },
                    "description": "## Purpose\nحذف فرع بلا سجلات.\n\n## Screens\n- P82 Branch Management — حذف — provider (web) `2095:28637`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-28637&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-28637&scaling=scale-down&content-scaling=fixed)\n- G-P18 رسالة 409 (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active` · `employee.section:branches` · `employee.owner:branch`\n\n## Parameters & fields\n### Path params\n- `id` — required · branch in scope · الفرع · source: GET {{base_url}}provider/branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. مسموح فقط لو لا حجوزات ولا تبرعات على الفرع (`PreventsDeletingWithDependents::blockingDependent`) وإلا 409 «يمكنك تعطيله».\n2. SoftDelete.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/branch.deleted` → ar «تم حذف الفرع» / en \"Branch deleted\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 409 | عليه حجوزات/تبرعات | `branch.has_bookings` | لا يمكن حذف الفرع لوجود حجوزات أو تبرعات عليه — يمكنك تعطيله | Branch has bookings/donations — deactivate it instead |\n| 403 | ليس owner | `branch.owner_only` | إدارة الفروع متاحة للحساب الرئيسي فقط | Only the main account can manage branches |\n| 404 | فرع خارج النطاق | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف لا يملك قسم `branches` (`employee.section:branches`) → `{\"key\":\"forbidden_section\",\"data\":{\"sections\":[\"branches\"]}}` | `employee.forbidden_section` | ليست لديك صلاحية الوصول لهذا القسم | You do not have access to this section |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف الفرع\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Branch deleted\",\n  \"data\": null\n}"
                    },
                    {
                      "name": "❌ 409 — عليه حجوزات/تبرعات",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Conflict",
                      "code": 409,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يمكن حذف الفرع لوجود حجوزات أو تبرعات عليه — يمكنك تعطيله\"\n}"
                    },
                    {
                      "name": "❌ 403 — ليس owner",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"إدارة الفروع متاحة للحساب الرئيسي فقط\"\n}"
                    },
                    {
                      "name": "❌ 404 — فرع خارج النطاق",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — الموظف لا يملك قسم branches (employee.section:branches) → {\"key\":\"forbidden_section\"}",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/branches/{id}",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "branches",
                            "{id}"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{provider_branch_id}}",
                              "description": "required · branch in scope · الفرع · source: GET {{base_url}}provider/branches"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"ليست لديك صلاحية الوصول لهذا القسم\",\n  \"data\": {\n    \"key\": \"forbidden_section\",\n    \"sections\": [\n      \"branches\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `branches` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "cities",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": []
                        },
                        "description": "## Purpose\nمصدر `city_id` (المدينة) — قائمة المدن — مصدر `city_id` (الملف الشخصي، النداء، الفرع، فلاتر).\n\n## Screens\n- U73 Select City (sheet) — user app `424:7445`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-7445&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user app `773:2151`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=773-2151&scaling=scale-down&content-scaling=fixed)\n- U140 Select City (sheet — appeal) — user web `825:7149`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=825-7149&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — city — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. **REUSE base** `GET cities` (`Api/V1/CityController@cities`) — لا كود جديد إلا ضمان الترتيب بالاسم و`is_active`.\n2. السيدر يزرع 17 مدينة سعودية (analysis §8) — لا «الإمارات» (C14).\n\n**Business rules / constraints:**\n- Known base quirk (CONTEXT §B): رسائل geo إنجليزية ثابتة في بعض المسارات — تُصلح هنا إلى `api/messages.fetched`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | القائمة فارغة → `data: []` (ليست 404) | `messages.fetched` | تم جلب البيانات بنجاح | Data fetched successfully |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": []
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 112,\n      \"name\": \"exercitationem sed\"\n    },\n    {\n      \"id\": 27,\n      \"name\": \"أبقيق\"\n    },\n    {\n      \"id\": 10,\n      \"name\": \"أبها\"\n    },\n    {\n      \"id\": 54,\n      \"name\": \"أبو ظبي\"\n    },\n    {\n      \"id\": 59,\n      \"name\": \"أربيل\"\n    },\n    {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    {\n      \"id\": 100,\n      \"name\": \"أم درمان\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"أملج\"\n    },\n    {\n      \"id\": 76,\n      \"name\": \"إربد\"\n    },\n    {\n      \"id\": 43,\n      \"name\": \"الإسكندرية\"\n    },\n    {\n      \"id\": 17,\n      \"name\": \"الباحة\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"البصرة\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"الجبيل\"\n    },\n    {\n      \"id\": 61,\n      \"name\": \"الجزائر\"\n    },\n    {\n      \"id\": 44,\n      \"name\": \"الجيزة\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"الخبر\"\n    },\n    {\n      \"id\": 33,\n      \"name\": \"الخرج\"\n    },\n    {\n      \"id\": 99,\n      \"name\": \"الخرطوم\"\n    },\n    {\n      \"id\": 34,\n      \"name\": \"الخفجي\"\n    },\n    {\n      \"id\": 89,\n      \"name\": \"الدار البيضاء\"\n    },\n    {\n      \"id\": 111,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 3,\n      \"name\": \"الدمام\"\n    },\n    {\n      \"id\": 52,\n      \"name\": \"الدوحة\"\n    },\n    {\n      \"id\": 14,\n      \"name\": \"الرأس\"\n    },\n    {\n      \"id\": 90,\n      \"name\": \"الرباط\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    {\n      \"id\": 53,\n      \"name\": \"الريان\"\n    },\n    {\n      \"id\": 77,\n      \"name\": \"الزرقاء\"\n    },\n    {\n      \"id\": 56,\n      \"name\": \"الشارقة\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الطائف\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الظهران\"\n    },\n    {\n      \"id\": 78,\n      \"name\": \"العقبة\"\n    },\n    {\n      \"id\": 28,\n      \"name\": \"العلا\"\n    },\n    {\n      \"id\": 51,\n      \"name\": \"الفروانية\"\n    },\n    {\n      \"id\": 42,\n      \"name\": \"القاهرة\"\n    },\n    {\n      \"id\": 30,\n      \"name\": \"القريات\"\n    },\n    {\n      \"id\": 35,\n      \"name\": \"القطيف\"\n    },\n    {\n      \"id\": 26,\n      \"name\": \"القنفذة\"\n    },\n    {\n      \"id\": 104,\n      \"name\": \"اللاذقية\"\n    },\n    {\n      \"id\": 31,\n      \"name\": \"المبرز\"\n    },\n    {\n      \"id\": 32,\n      \"name\": \"المجمعه\"\n    },\n    {\n      \"id\": 66,\n      \"name\": \"المحرق\"\n    },\n    {\n      \"id\": 9,\n      \"name\": \"المدينة المنورة\"\n    },\n    {\n      \"id\": 65,\n      \"name\": \"المنامة\"\n    },\n    {\n      \"id\": 60,\n      \"name\": \"الموصل\"\n    },\n    {\n      \"id\": 19,\n      \"name\": \"الهفوف\"\n    },\n    {\n      \"id\": 37,\n      \"name\": \"الوجه\"\n    },\n    {\n      \"id\": 12,\n      \"name\": \"بريدة\"\n    },\n    {\n      \"id\": 57,\n      \"name\": \"بغداد\"\n    },\n    {\n      \"id\": 84,\n      \"name\": \"بنغازي\"\n    },\n    {\n      \"id\": 79,\n      \"name\": \"بيروت\"\n    },\n    {\n      \"id\": 21,\n      \"name\": \"تبوك\"\n    },\n    {\n      \"id\": 110,\n      \"name\": \"تعز\"\n    },\n    {\n      \"id\": 105,\n      \"name\": \"تونس\"\n    },\n    {\n      \"id\": 18,\n      \"name\": \"جازان\"\n    },\n    {\n      \"id\": 80,\n      \"name\": \"جبيل\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"جدة\"\n    },\n    {\n      \"id\": 72,\n      \"name\": \"جيبوتي\"\n    },\n    {\n      \"id\": 15,\n      \"name\": \"حائل\"\n    },\n    {\n      \"id\": 29,\n      \"name\": \"حفر الباطن\"\n    },\n    {\n      \"id\": 102,\n      \"name\": \"حلب\"\n    },\n    {\n      \"id\": 103,\n      \"name\": \"حمص\"\n    },\n    {\n      \"id\": 50,\n      \"name\": \"حول الله\"\n    },\n    {\n      \"id\": 41,\n      \"name\": \"خريص\"\n    },\n    {\n      \"id\": 11,\n      \"name\": \"خميس مشيط\"\n    },\n    {\n      \"id\": 55,\n      \"name\": \"دبي\"\n    },\n    {\n      \"id\": 101,\n      \"name\": \"دمشق\"\n    },\n    {\n      \"id\": 74,\n      \"name\": \"ديخيل\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"رأس تنورة\"\n    },\n    {\n      \"id\": 94,\n      \"name\": \"رام الله\"\n    },\n    {\n      \"id\": 24,\n      \"name\": \"رفحاء\"\n    },\n    {\n      \"id\": 88,\n      \"name\": \"زويرات\"\n    },\n    {\n      \"id\": 22,\n      \"name\": \"سكاكا\"\n    },\n    {\n      \"id\": 107,\n      \"name\": \"سوسة\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"صحار\"\n    },\n    {\n      \"id\": 106,\n      \"name\": \"صفاقس\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"صلالة\"\n    },\n    {\n      \"id\": 108,\n      \"name\": \"صنعاء\"\n    },\n    {\n      \"id\": 82,\n      \"name\": \"صيدا\"\n    },\n    {\n      \"id\": 40,\n      \"name\": \"ضرما\"\n    },\n    {\n      \"id\": 81,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 83,\n      \"name\": \"طرابلس\"\n    },\n    {\n      \"id\": 25,\n      \"name\": \"طريف\"\n    },\n    {\n      \"id\": 93,\n      \"name\": \"طنجة\"\n    },\n    {\n      \"id\": 109,\n      \"name\": \"عدن\"\n    },\n    {\n      \"id\": 23,\n      \"name\": \"عرعر\"\n    },\n    {\n      \"id\": 87,\n      \"name\": \"عطار\"\n    },\n    {\n      \"id\": 73,\n      \"name\": \"علي صبيح\"\n    },\n    {\n      \"id\": 75,\n      \"name\": \"عمان\"\n    },\n    {\n      \"id\": 64,\n      \"name\": \"عنابة\"\n    },\n    {\n      \"id\": 13,\n      \"name\": \"عنيزة\"\n    },\n    {\n      \"id\": 95,\n      \"name\": \"غزة\"\n    },\n    {\n      \"id\": 91,\n      \"name\": \"فاس\"\n    },\n    {\n      \"id\": 71,\n      \"name\": \"فومبوني\"\n    },\n    {\n      \"id\": 63,\n      \"name\": \"قسنطينة\"\n    },\n    {\n      \"id\": 70,\n      \"name\": \"متسامدو\"\n    },\n    {\n      \"id\": 49,\n      \"name\": \"مدينة الكويت\"\n    },\n    {\n      \"id\": 68,\n      \"name\": \"مدينة جنوبية\"\n    },\n    {\n      \"id\": 67,\n      \"name\": \"مدينة شمالية\"\n    },\n    {\n      \"id\": 92,\n      \"name\": \"مراكش\"\n    },\n    {\n      \"id\": 46,\n      \"name\": \"مسقط\"\n    },\n    {\n      \"id\": 85,\n      \"name\": \"مصراتة\"\n    },\n    {\n      \"id\": 97,\n      \"name\": \"مقديشو\"\n    },\n    {\n      \"id\": 8,\n      \"name\": \"مكة المكرمة\"\n    },\n    {\n      \"id\": 69,\n      \"name\": \"موروني\"\n    },\n    {\n      \"id\": 96,\n      \"name\": \"نابلس\"\n    },\n    {\n      \"id\": 16,\n      \"name\": \"نجران\"\n    },\n    {\n      \"id\": 86,\n      \"name\": \"نواكشوط\"\n    },\n    {\n      \"id\": 98,\n      \"name\": \"هرجيسا\"\n    },\n    {\n      \"id\": 62,\n      \"name\": \"وهران\"\n    },\n    {\n      \"id\": 20,\n      \"name\": \"ينبع\"\n    },\n    {\n      \"id\": 36,\n      \"name\": \"ينبع الصناعية\"\n    }\n  ]\n}"
                        }
                      ]
                    },
                    {
                      "name": "cities/{id}/districts",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}cities/{id}/districts",
                          "host": [
                            "{{base_url}}cities"
                          ],
                          "path": [
                            "{id}",
                            "districts"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "1",
                              "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `district_id` (الحي — يتبع مدينة الفرع) — أحياء مدينة — مصدر `district_id` في النداء (web) والفرع.\n\n## Screens\n- U137 Create Appeal — الحي (web) — user web `2051:7331`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-7331&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch — district — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:cities,id · المدينة · source: GET {{base_url}}cities · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يرجع أحياء المدينة النشطة (base `districts` + translations) مرتبة بالاسم.\n2. المدينة غير موجودة → 404.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | مدينة غير موجودة | `messages.not_found` | العنصر غير موجود | Not found |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — districts of Riyadh",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities/{id}/districts",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": [
                                "{id}",
                                "districts"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 3,\n      \"name\": \"الحي الدبلوماسي\"\n    },\n    {\n      \"id\": 38,\n      \"name\": \"الدرعية\"\n    },\n    {\n      \"id\": 48,\n      \"name\": \"الروضة\"\n    },\n    {\n      \"id\": 2,\n      \"name\": \"السليمانية\"\n    },\n    {\n      \"id\": 47,\n      \"name\": \"العكيشية\"\n    },\n    {\n      \"id\": 1,\n      \"name\": \"العليا\"\n    },\n    {\n      \"id\": 4,\n      \"name\": \"المربع\"\n    },\n    {\n      \"id\": 6,\n      \"name\": \"المروج\"\n    },\n    {\n      \"id\": 39,\n      \"name\": \"المروج II\"\n    },\n    {\n      \"id\": 5,\n      \"name\": \"الملاذ\"\n    },\n    {\n      \"id\": 7,\n      \"name\": \"الورود\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 404 — unknown city",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}cities/{id}/districts",
                              "host": [
                                "{{base_url}}cities"
                              ],
                              "path": [
                                "{id}",
                                "districts"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "1",
                                  "description": "required · exists:cities,id · المدينة · source: GET {{base_url}}cities"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "lookups/donation-types",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"has waiting_days\", () => pm.expect(pm.response.json().data[0]).to.have.property(\"waiting_days\"));",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"slug\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"name_ar\"); pm.expect(o).to.have.property(\"name_en\"); pm.expect(o).to.have.property(\"description\"); pm.expect(o).to.have.property(\"duration_minutes\"); pm.expect(o).to.have.property(\"waiting_days\"); pm.expect(o).to.have.property(\"frequency_text\"); pm.expect(o).to.have.property(\"lives_text\"); pm.expect(o).to.have.property(\"icon\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}lookups/donation-types",
                          "host": [
                            "{{base_url}}lookups"
                          ],
                          "path": [
                            "donation-types"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `donation_type_id` / نوع التبرع — أنواع التبرع النشطة (اختيارياً لفرع محدد) — مصدر `donation_type_id` في كل الفورمات.\n\n## Screens\n- U22 Select Donation Type — user app `2051:1591`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-1591&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user app `2251:35`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2251-35&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2295:5122`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2295-5122&scaling=scale-down&content-scaling=fixed)\n- U22 Select Donation Type — user web `2051:6813`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2051-6813&scaling=scale-down&content-scaling=fixed)\n- P9 Appeals filter — donation type — provider (web) `245:6075`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=245-6075&scaling=scale-down&content-scaling=fixed)\n- P83 Add Branch step 1 — available types — provider (web) `2095:29120`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-29120&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يجلب `DonationType::active()->orderBy('sort_order')` (soft-deleted مستبعد).\n2. لو `branch_id` موجود: يقصر النتيجة على أنواع الفرع (`branch_donation_type`) — مسار «من مركز» U150.\n3. يرجع `DonationTypeResource` (الاسم باللغة الحالية + `name_en`/`name_ar` لعرض السطر المزدوج في U22).\n\n**Business rules / constraints:**\n- `waiting_days` = فترة الانتظار بعد **آخر تبرع مكتمل** من هذا النوع (brief §5.1).\n- `frequency_text` يُشتق: «كل :days يوم» من `waiting_days`.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — all active types",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    },\n    {\n      \"id\": 4,\n      \"slug\": \"double_red_cells\",\n      \"name\": \"كريات حمراء مزدوجة\",\n      \"name_ar\": \"كريات حمراء مزدوجة\",\n      \"name_en\": \"Double Red Cells\",\n      \"description\": \"تبرع بوحدتين من الكريات الحمراء في جلسة واحدة لدعم مرضى الأنيميا والجراحات الكبرى.\",\n      \"duration_minutes\": 60,\n      \"waiting_days\": 112,\n      \"frequency_text\": \"كل ١١٢ يوم\",\n      \"lives_text\": \"ينقذ حياة مريضين\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 5,\n      \"slug\": \"red_cells\",\n      \"name\": \"كريات حمراء\",\n      \"name_ar\": \"كريات حمراء\",\n      \"name_en\": \"Red Cells\",\n      \"description\": \"تبرع بالكريات الحمراء لمرضى فقر الدم الحاد والنزيف.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 56,\n      \"frequency_text\": \"كل ٥٦ يوم\",\n      \"lives_text\": \"ينقذ حياة مريض\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — types offered by branch 2",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=2",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"slug\": \"whole_blood\",\n      \"name\": \"دم كامل\",\n      \"name_ar\": \"دم كامل\",\n      \"name_en\": \"Whole Blood\",\n      \"description\": \"التبرع التقليدي بوحدة دم كاملة، ويمكن فصل مكوناتها لإنقاذ أكثر من مريض.\",\n      \"duration_minutes\": 30,\n      \"waiting_days\": 90,\n      \"frequency_text\": \"كل ٩٠ يوم\",\n      \"lives_text\": \"ينقذ ٣ أرواح\",\n      \"icon\": \"http://help.test/uploads/donation_types/1.png\"\n    },\n    {\n      \"id\": 2,\n      \"slug\": \"platelets\",\n      \"name\": \"صفائح دموية\",\n      \"name_ar\": \"صفائح دموية\",\n      \"name_en\": \"Platelets\",\n      \"description\": \"تبرع بالصفائح الدموية لمرضى السرطان وزراعة الأعضاء، ويمكن تكراره كل أسبوع.\",\n      \"duration_minutes\": 90,\n      \"waiting_days\": 7,\n      \"frequency_text\": \"كل ٧ أيام\",\n      \"lives_text\": \"ينقذ ٣ مرضى سرطان\",\n      \"icon\": \"http://help.test/uploads/donation_types/2.png\"\n    },\n    {\n      \"id\": 3,\n      \"slug\": \"plasma\",\n      \"name\": \"بلازما\",\n      \"name_ar\": \"بلازما\",\n      \"name_en\": \"Plasma\",\n      \"description\": \"التبرع ببلازما الدم لمصابي الحروق والنزيف ومرضى نقص المناعة.\",\n      \"duration_minutes\": 45,\n      \"waiting_days\": 28,\n      \"frequency_text\": \"كل ٢٨ يوم\",\n      \"lives_text\": \"ينقذ مصابي الحروق\",\n      \"icon\": \"http://help.test/uploads/donation_types/3.png\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — unknown branch_id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}lookups/donation-types?branch_id=99999",
                              "host": [
                                "{{base_url}}lookups"
                              ],
                              "path": [
                                "donation-types"
                              ],
                              "query": [
                                {
                                  "key": "branch_id",
                                  "value": "1",
                                  "description": "optional · nullable|integer|exists:branches,id (whereNull deleted_at, is_active) · قصر الأنواع على فرع · source: GET {{base_url}}branches",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/closure-reasons",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/closure-reasons",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "closure-reasons"
                          ]
                        },
                        "description": "## Purpose\nمصدر `reason` (سبب الإجازة) — مصدر أسباب الإغلاق في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P87 Add Closure Date (modal) — provider (web) `2095:32957`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32957&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-32957&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\ClosureReason` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/closure-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "closure-reasons"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": \"official_holiday\",\n      \"label\": \"إجازة رسمية\"\n    },\n    {\n      \"value\": \"maintenance\",\n      \"label\": \"صيانة الفرع\"\n    },\n    {\n      \"value\": \"exceptional\",\n      \"label\": \"إغلاق استثنائي\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/closure-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "closure-reasons"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": \"official_holiday\",\n      \"label\": \"Official holiday\"\n    },\n    {\n      \"value\": \"maintenance\",\n      \"label\": \"Branch maintenance\"\n    },\n    {\n      \"value\": \"exceptional\",\n      \"label\": \"Exceptional closure\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/closure-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "closure-reasons"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/closure-reasons",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "closure-reasons"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/slot-durations",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"value\"); pm.expect(o).to.have.property(\"label\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/slot-durations",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "slot-durations"
                          ]
                        },
                        "description": "## Purpose\nمصدر `slot_duration` (مدة الفترة) — مصدر مدد الفترات في فورمات/فلاتر لوحة البنك.\n\n## Screens\n- P89 Add Branch / Step 3 — مدة الفترة — provider (web) `2095:33273`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-33273&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يرجع قيم `App\\Enums\\SlotDuration` عبر `toValueLabel()` (+ألوان إن وُجدت) — ثابتة، cache per locale.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/slot-durations",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "slot-durations"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"value\": 30,\n      \"label\": \"30 دقيقة\"\n    },\n    {\n      \"value\": 60,\n      \"label\": \"60 دقيقة\"\n    },\n    {\n      \"value\": 90,\n      \"label\": \"90 دقيقة\"\n    },\n    {\n      \"value\": 120,\n      \"label\": \"120 دقيقة\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/slot-durations",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "slot-durations"
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"value\": 30,\n      \"label\": \"30 minutes\"\n    },\n    {\n      \"value\": 60,\n      \"label\": \"60 minutes\"\n    },\n    {\n      \"value\": 90,\n      \"label\": \"90 minutes\"\n    },\n    {\n      \"value\": 120,\n      \"label\": \"120 minutes\"\n    }\n  ]\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/slot-durations",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "slot-durations"
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/slot-durations",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "slot-durations"
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "Demo",
      "description": "ملء/تنظيف بيانات تجريبية — يعمل فقط عند `DEMO_DATA_ENABLED=true` (وإلا 404).",
      "item": [
        {
          "name": "Logic",
          "item": [
            {
              "name": "user",
              "description": "Flow `user` — 3 endpoints (sprint 9). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "demo-user-fill",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                          "pm.test(\"a count per section (appointments, donations, appeals, complaints, notifications)\", () => { const c = pm.response.json().data.created; pm.expect(c).to.have.property(\"appointments\"); pm.expect(c.appointments).to.be.a(\"number\"); pm.expect(c).to.have.property(\"donations\"); pm.expect(c.donations).to.be.a(\"number\"); pm.expect(c).to.have.property(\"appeals\"); pm.expect(c.appeals).to.be.a(\"number\"); pm.expect(c).to.have.property(\"complaints\"); pm.expect(c.complaints).to.be.a(\"number\"); pm.expect(c).to.have.property(\"notifications\"); pm.expect(c.notifications).to.be.a(\"number\"); });",
                          "pm.test(\"batch id\", () => pm.expect(pm.response.json().data.batch).to.match(/^demo-/));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}demo/user/fill",
                      "host": [
                        "{{base_url}}demo"
                      ],
                      "path": [
                        "user",
                        "fill"
                      ]
                    },
                    "description": "## Purpose\nملء حساب المستخدم الحالي ببيانات تجريبية بكل الحالات.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 (default 3) · عدد السجلات لكل قسم · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 (default 1) · عدد السجلات لكل حالة · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يشغّل كل أقسام المستخدم بالترتيب: appointments → donations → appeals → complaints → notifications.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count, per_status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "count",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:20 (default 3) · عدد السجلات لكل قسم"
                        },
                        {
                          "key": "per_status",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:5 (default 1) · عدد السجلات لكل حالة"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4,\n      \"donations\": 4,\n      \"appeals\": 6,\n      \"complaints\": 4,\n      \"notifications\": 25\n    },\n    \"batch\": \"demo-20261019-001803\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4,\n      \"donations\": 4,\n      \"appeals\": 0,\n      \"complaints\": 0,\n      \"notifications\": 25\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "9",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن تكون قيمة الحقل العدد مساوية أو أكبر لـ 1. (and 1 more error)\",\n  \"errors\": {\n    \"count\": [\n      \"يجب أن تكون قيمة الحقل العدد مساوية أو أكبر لـ 1.\"\n    ],\n    \"per_status\": [\n      \"لا يجب ان تكون قيمة حقل العدد لكل حالة اكبر من 5.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "demo-user-fill-section",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                          "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}demo/user/fill/{section}",
                      "host": [
                        "{{base_url}}demo"
                      ],
                      "path": [
                        "user",
                        "fill",
                        "{section}"
                      ],
                      "variable": [
                        {
                          "key": "section",
                          "value": "appointments",
                          "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                        }
                      ]
                    },
                    "description": "## Purpose\nملء قسم محدد لحساب المستخدم.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,appeals,complaints,notifications · القسم · example: `appointments`\n\n### Body (form-data)\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `appeals` · `complaints` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n5. `complaints`: شكاوى CMP- بكل الحالات مع `complaint_status_logs` والرد الرسمي.\n6. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n7. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n8. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n9. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "count",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:20 · "
                        },
                        {
                          "key": "per_status",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:5 · "
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success: appointments (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: donations (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"donations\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: appeals (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appeals\": 0\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: complaints (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"complaints\": 0\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: notifications (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"notifications\": 25\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 4\n    },\n    \"batch\": \"demo-20261019-001804\"\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 404 — قسم غير معروف",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "99",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "appointments",
                              "description": "required · in:appointments,donations,appeals,complaints,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "demo-user-clear",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"deleted\"); });",
                          "pm.test(\"a count per section (appointments, donations, appeals, complaints, notifications)\", () => { const c = pm.response.json().data.deleted; pm.expect(c).to.have.property(\"appointments\"); pm.expect(c.appointments).to.be.a(\"number\"); pm.expect(c).to.have.property(\"donations\"); pm.expect(c.donations).to.be.a(\"number\"); pm.expect(c).to.have.property(\"appeals\"); pm.expect(c.appeals).to.be.a(\"number\"); pm.expect(c).to.have.property(\"complaints\"); pm.expect(c.complaints).to.be.a(\"number\"); pm.expect(c).to.have.property(\"notifications\"); pm.expect(c.notifications).to.be.a(\"number\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}demo/user",
                      "host": [
                        "{{base_url}}demo"
                      ],
                      "path": [
                        "user"
                      ]
                    },
                    "description": "## Purpose\nتنظيف بيانات المستخدم التجريبية.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n_none_\n\n## Behaviour notes\n**Steps:**\n1. يحذف كل ما أنشأته طلبات demo لهذا المستخدم (والمتبرعين التجريبيين المرتبطين) ويعيد ضبط العدّادات (appeals.confirmed_count، المخزون عبر حركات عكسية… أو حذف الحركات التجريبية وإعادة حساب الرصيد).\n2. لا يمس بيانات الـ seed.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.cleared` → ar «تم حذف البيانات التجريبية» / en \"Demo data removed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (`is_blocked`، middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف البيانات التجريبية\",\n  \"data\": {\n    \"deleted\": {\n      \"appointments\": 16,\n      \"donations\": 12,\n      \"appeals\": 6,\n      \"complaints\": 4,\n      \"notifications\": 75\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Demo data removed\",\n  \"data\": {\n    \"deleted\": {\n      \"appointments\": 4,\n      \"donations\": 4,\n      \"appeals\": 6,\n      \"complaints\": 4,\n      \"notifications\": 25\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المتبرع محظور (is_blocked)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user"
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "set-appointment-status",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"new status echoed\", () => { const d = pm.response.json().data; pm.expect(d).to.have.property(\"status\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{user_token}}",
                        "description": "required · Sanctum token of the donor"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}demo/user/appointments/{id}/status",
                      "host": [
                        "{{base_url}}demo"
                      ],
                      "path": [
                        "user",
                        "appointments",
                        "{id}",
                        "status"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "1",
                          "description": "required · معرّف موعد يخص المتبرع نفسه · source: GET appointments"
                        }
                      ]
                    },
                    "description": "## Purpose\nأداة تجريبية (DEMO_DATA_ENABLED): تغيير حالة أحد مواعيد المتبرع الحالي لأي حالة لتجربة كل حالات الحجز على الشاشات (تجاوز مباشر — بلا قيود انتقال ولا آثار جانبية). `DELETE demo/user` يحذف البيانات التجريبية.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{user_token}}` (Sanctum). `auth:sanctum` (User) + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:sanctum` · `donor`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `id` — required · معرّف موعد يخص المتبرع نفسه · example: `1`\n\n### Body (form-data)\n- `status` — required · in:pending,confirmed,rejected,cancelled,expired,attended,no_show · الحالة المطلوبة · example: `confirmed`\n\n## Behaviour notes\n**Steps:**\n1. يجد موعد المتبرع الحالي بالـ `id` (موعد متبرع آخر = 404).\n2. يضبط الحالة للقيمة المطلوبة + الطابع الزمني المناسب (confirmed_at / cancelled_at / …) ويكتب سجل حالة — تجاوز مباشر بلا قيود انتقال.\n\n**Status / state transitions:** forced (demo override).\n\n**Side effects (Laravel-first):**\n- none (no events, no donation creation).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.status_changed` → يرجّع الموعد بالحالة الجديدة (`AppointmentResource`).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | الموعد ليس للمتبرع الحالي | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (status) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | حساب المتبرع محظور (middleware `donor`) | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{user_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "status",
                          "value": "confirmed",
                          "type": "text",
                          "description": "required · in:pending,confirmed,rejected,cancelled,expired,attended,no_show · الحالة المطلوبة للموعد"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/appointments/1/status",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "appointments",
                            "1",
                            "status"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم تغيير حالة الموعد إلى مؤكد\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"BK-2610-001\",\n    \"date\": \"2026-10-22\",\n    \"day_name\": \"الخميس\",\n    \"time\": \"01:20 م\",\n    \"starts_at\": \"2026-10-22T13:20:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"district\": \"العليا\",\n      \"city\": \"الرياض\",\n      \"address\": \"حي العليا، طريق الملك فهد 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"دم كامل\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"مؤكد\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"urgent\",\n      \"label\": \"عاجل\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"استجابة لنداء\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"preparation_note\": \"تناول وجبة صحية قبل التبرع وأكثر من شرب الماء، وأحضر هويتك الوطنية.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-22T07:20:00+00:00\",\n    \"reminder_text\": \"سنرسل لك تذكيراً قبل الموعد بـ 24 ساعة\",\n    \"sms_note\": \"ستصلك رسالة SMS برمز الحجز عند تأكيد المركز\",\n    \"action_buttons\": []\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/appointments/1/status",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "appointments",
                            "1",
                            "status"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Appointment status changed to Confirmed\",\n  \"data\": {\n    \"id\": 1,\n    \"code\": \"BK-2610-001\",\n    \"date\": \"2026-10-22\",\n    \"day_name\": \"Thursday\",\n    \"time\": \"01:20 PM\",\n    \"starts_at\": \"2026-10-22T13:20:00+00:00\",\n    \"branch\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"district\": \"Olaya\",\n      \"city\": null,\n      \"address\": \"Al Olaya, King Fahd Road 12713\",\n      \"lat\": 24.6948,\n      \"lng\": 46.6842,\n      \"phone\": \"0114647272\"\n    },\n    \"donation_type\": {\n      \"id\": 1,\n      \"name\": \"Whole Blood\"\n    },\n    \"status\": {\n      \"value\": \"confirmed\",\n      \"label\": \"Confirmed\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"purpose\": {\n      \"value\": \"urgent\",\n      \"label\": \"Urgent\",\n      \"color\": \"#D97706\",\n      \"bg_color\": \"#FFFBEB\"\n    },\n    \"source\": {\n      \"value\": \"appeal\",\n      \"label\": \"Appeal response\",\n      \"color\": \"#C8102E\",\n      \"bg_color\": \"#FEF2F2\"\n    },\n    \"appeal\": {\n      \"id\": 1,\n      \"code\": \"APL-2608-001\"\n    },\n    \"preparation_note\": \"Eat a healthy meal, drink plenty of water and bring your national ID.\",\n    \"status_reason\": null,\n    \"can_change_until\": \"2026-10-22T07:20:00+00:00\",\n    \"reminder_text\": \"We'll send you a reminder 24 hours before the appointment\",\n    \"sms_note\": \"You'll get an SMS with the booking code once the center confirms\",\n    \"action_buttons\": []\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — حالة غير صالحة",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/appointments/1/status",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "appointments",
                            "1",
                            "status"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"عناصر غير صالحة\",\n  \"data\": {\n    \"status\": [\n      \"الحقل الحالة غير صحيح.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — ليس موعد المتبرع / الديمو مقفول",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/appointments/1/status",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "appointments",
                            "1",
                            "status"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/appointments/1/status",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "appointments",
                            "1",
                            "status"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "❌ 403 — حساب المتبرع محظور",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{user_token}}",
                            "description": "required · Sanctum token of the donor"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/user/appointments/1/status",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "user",
                            "appointments",
                            "1",
                            "status"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Forbidden",
                      "code": 403,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `user` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "auth/nafath/login",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"request id\", () => { const d = pm.response.json().data; pm.expect(d.request_id).to.be.a(\"number\"); });",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"request_id\"); pm.expect(o).to.have.property(\"transaction_id\"); pm.expect(o).to.have.property(\"random_number\"); pm.expect(o).to.have.property(\"purpose\"); pm.expect(o).to.have.property(\"expires_at\"); pm.expect(o).to.have.property(\"expires_in_seconds\"); pm.expect(o).to.have.property(\"instruction\"); pm.expect(o).to.have.property(\"consent_text\"); });",
                              "{ const v = pm.response.json().data.request_id; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"nafath_request_id\", v); pm.environment.set(\"nafath_request_id\", v); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/login",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "login"
                          ]
                        },
                        "description": "## Purpose\nالخطوة 1 لتوكن المتبرع: ابدأ طلب نفاذ (الرقم 1012345678 = المتبرع الرئيسي في الـ seed) — الشاشة 1: بدء الدخول عبر نفاذ برقم الهوية فقط (هوية غير مسجلة → يكمل التسجيل تلقائياً).\n\n## Screens\n- U10 Sign In «مرحباً بعودتك» — user app `424:12289`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12289&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=424-12289&scaling=scale-down&content-scaling=fixed)\n- U10 Sign In «مرحباً بعودتك» — user web `486:7441`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-7441&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=486-7441&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: `throttle:nafath` (5/min per IP + national_id)\n\n## Parameters & fields\n### Body (form-data)\n- `national_id` — required · required|digits:10|regex:/^[12]\\d{9}$/ · رقم الهوية · example: `1012345678`\n\n\n## Behaviour notes\n**Steps:**\n1. يتحقق من الهوية (`^[12]\\d{9}$`) ثم يبحث عن مستخدم بنفس `national_id` (يشمل المحذوف soft — المحذوف يُعامل كجديد بعد الاستعادة؟ **لا**: الحساب المحذوف لا يُستعاد؛ يُنشأ حساب جديد ويُربط الهوية به).\n2. لو الهوية **غير مسجّلة** → يحوّل الغرض إلى `register` بصمت (بعد نفاذ يكمل التسجيل تلقائياً: `next_step=complete_info`).\n3. يستدعي مزوّد نفاذ عبر `App\\Contracts\\NafathClient` (driver حقيقي / `fake` في local + tests) → `transaction_id` + `random_number` (رقمان) + مهلة.\n4. يُنشئ صف `nafath_requests` (status=`waiting`, purpose, ip, expires_at = now + مهلة نفاذ) ويرجع `request_id` للـ polling.\n5. لا OTP ولا كلمة مرور منا — نفاذ وحده (brief §3.1).\n\n**Business rules / constraints:**\n- **المدخل الوحيد هو `national_id`** - لا `country_code` ولا `phone`: الجوال يأتي من نفاذ عند الاكتمال (والمفتاح `966`).\n- **طلب واحد نشط لكل هوية** (قيد نفاذ نفسه): ما دام لهوية طلب `waiting` لم تنتهِ مهلته (~200 ث، `NAFATH_TTL_SECONDS`) فالبدء مجدداً = **409** `auth.nafath_request_active`؛ بعد الانتهاء/الاكتمال يُسمح بطلب جديد ويُنهى القديم (`expired`).\n- مهلة المعاملة **~200 ثانية** (`expires_in_seconds` + `expires_at`)؛ بعدها يرجع الـ polling `expired`.\n- نفاذ يرجع **رقماً عشوائياً + حالة فقط** (لا نسبة تقدم ولا خطوات فرعية) - الشاشة 2 تعرض الرقم + عدّاد فقط.\n- نفاذ غير متاح → 503 برسالة `auth.nafath_unavailable` (لا يُنشأ صف).\n\n**Status / state transitions:** `nafath_requests.status`: — → `waiting` (`NafathStatus`).\n\n**Multi-step flow (3 شاشات فقط):** الشاشة **1** (هذا: رقم الهوية) → الشاشة **2** `GET auth/nafath/{id}/status` (رقم عشوائي + عدّاد ~200 ث + «تأكيد الربط»، polling كل ~3 ث حتى `completed|rejected|expired|failed|underage`؛ **الموافقة تُسجَّل تلقائياً عند الاكتمال**) → الشاشة **3** `POST auth/complete-info` (بيانات نفاذ للقراءة + فصيلة الدم [+ المدينة لو لم يرجعها نفاذ]) حسب `next_step`.\n\n**Side effects (Laravel-first):**\n- HTTP call to Nafath (timeout 10s, `report()` on failure) — not queued (the user waits for the number).\n\n**Edge cases & failure conditions:**\n- هوية مستخدم محظور → يبدأ الطلب عادياً؛ الحظر يُرجع عند الاكتمال (`account_blocked`) حتى لا نكشف حالة الحساب قبل التحقق.\n- العمر < 18 يُكتشف عند الاكتمال من تاريخ ميلاد نفاذ (`underage`)؛ لو لم يُرجع نفاذ تاريخ ميلاد لا يمكن الفحص فيمضي الطلب.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.nafath_started` → ar «افتح تطبيق نفاذ واختر الرقم» / en \"Open the Nafath app and choose the number\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (national_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 409 | لهذه الهوية طلب نفاذ قائم لم تنتهِ مهلته (طلب واحد نشط لكل هوية). من نفس الجهاز: `data` = الطلب القائم (يكمل الشاشة 2)؛ من جهاز آخر: `data.retry_after_seconds` | `auth.nafath_request_active` | لديك طلب تحقق قائم في نفاذ، أكمله أو انتظر انتهاء مهلته | You already have a pending Nafath request, finish it or wait for it to expire |\n| 503 | خدمة نفاذ غير متاحة | `auth.nafath_unavailable` | تعذّر الاتصال بخدمة نفاذ حالياً، حاول لاحقاً | Nafath is unavailable right now, try later |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "national_id",
                              "value": "1012345678",
                              "type": "text",
                              "description": "required · required|digits:10|regex:/^[12]\\d{9}$/ · رقم الهوية"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — registered id (purpose=login)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/login",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "national_id",
                                  "value": "1012345678",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"افتح تطبيق نفاذ واختر الرقم\",\n  \"data\": {\n    \"request_id\": 263,\n    \"transaction_id\": \"c33d65c4-6ee2-4934-85b9-d50015dd10e4\",\n    \"random_number\": \"81\",\n    \"purpose\": {\n      \"value\": \"login\",\n      \"label\": \"دخول\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — unknown id (silently purpose=register)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/login",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "national_id",
                                  "value": "1034567891",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"افتح تطبيق نفاذ واختر الرقم\",\n  \"data\": {\n    \"request_id\": 264,\n    \"transaction_id\": \"77e6734d-fe97-4b2f-9951-20e940f70901\",\n    \"random_number\": \"86\",\n    \"purpose\": {\n      \"value\": \"register\",\n      \"label\": \"تسجيل\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — national_id «123»",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/login",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "national_id",
                                  "value": "123",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن يحتوي حقل رقم الهوية على 10 رقمًا/أرقام. (and 1 more error)\",\n  \"errors\": {\n    \"national_id\": [\n      \"يجب أن يحتوي حقل رقم الهوية على 10 رقمًا/أرقام.\",\n      \"صيغة حقل رقم الهوية غير صالحة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 409 — a live transaction already exists for this id (same device: the request comes back)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/login",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "national_id",
                                  "value": "1012345678",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Conflict",
                          "code": 409,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"لديك طلب تحقق قائم في نفاذ، أكمله أو انتظر انتهاء مهلته\",\n  \"key\": \"nafath_request_active\",\n  \"data\": {\n    \"request_id\": 263,\n    \"transaction_id\": \"c33d65c4-6ee2-4934-85b9-d50015dd10e4\",\n    \"random_number\": \"81\",\n    \"purpose\": {\n      \"value\": \"login\",\n      \"label\": \"دخول\"\n    },\n    \"expires_at\": \"2026-10-19T13:17:10+00:00\",\n    \"expires_in_seconds\": 199,\n    \"instruction\": \"افتح تطبيق نفاذ واختر الرقم الظاهر أدناه لتأكيد هويتك\",\n    \"consent_text\": \"بالضغط على «تأكيد الربط» أوافق على ربط بياناتي من نفاذ بحسابي في أنقذني\"\n  }\n}"
                        },
                        {
                          "name": "❌ 503 — nafath down (fake driver NAFATH_FAKE_FAIL=true)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/login",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "national_id",
                                  "value": "1022222221",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Service Unavailable",
                          "code": 503,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تعذّر الاتصال بخدمة نفاذ حالياً، حاول لاحقاً\"\n}"
                        },
                        {
                          "name": "❌ 429 — too many requests (6th call within a minute)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/login",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "national_id",
                                  "value": "1055555551",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Too Many Requests",
                          "code": 429,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "auth/nafath/{id}/status",
                      "event": [
                        {
                          "listen": "prerequest",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "{",
                              "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                              "}"
                            ]
                          }
                        },
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "const d = pm.response.json().data;",
                              "if (d.token) pm.test(\"completed = the user itself, flat (token, next_step, missing_fields; no status / user)\", () => { pm.expect(d).to.have.property(\"next_step\"); pm.expect(d.missing_fields).to.be.an(\"array\"); pm.expect(d).to.not.have.property(\"status\"); pm.expect(d).to.not.have.property(\"user\"); });",
                              "else pm.test(\"any other outcome carries the status\", () => pm.expect(d.status).to.have.property(\"value\"));",
                              "if (d.status && d.status.value === \"waiting\") pm.test(\"waiting carries the countdown\", () => pm.expect(d.expires_in_seconds).to.be.a(\"number\"));",
                              "{ const d = pm.response.json().data; if (d.token) { pm.collectionVariables.set(\"user_token\", d.token); pm.environment.set(\"user_token\", d.token); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}auth/nafath/{id}/status",
                          "host": [
                            "{{base_url}}auth"
                          ],
                          "path": [
                            "nafath",
                            "{id}",
                            "status"
                          ],
                          "variable": [
                            {
                              "key": "id",
                              "value": "{{nafath_request_id}}",
                              "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                            }
                          ]
                        },
                        "description": "## Purpose\nالخطوة 2: استعلم عن الطلب — يحفظ `{{user_token}}` تلقائياً — الشاشة 2: الـ polling على طلب نفاذ — عند الاكتمال تُسجَّل الموافقة ويرجع المستخدم والتوكن والخطوة التالية (الشاشة 3).\n\n## Screens\n- 2 شاشة الرقم العشوائي + العدّاد + «تأكيد الربط» (repurposed «In Progress v03» - بلا شريط تقدم) — user app `1488:2157`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2157&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1488-2157&scaling=scale-down&content-scaling=fixed)\n- 2 نفس الشاشة (web: «In Progress» المعاد توظيفه) — user web `1490:4955`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-4955&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=1490-4955&scaling=scale-down&content-scaling=fixed)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: `throttle:nafath-poll` (30/min per request id — a named limiter in `AppServiceProvider`; the client polls every ~3s = ~20/min)\n\n## Parameters & fields\n### Path params\n- `id` — required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id · example: `41`\n\n\n## Behaviour notes\n**Steps:**\n1. يحمّل `nafath_requests` بالـ id؛ لو `waiting` يسأل مزوّد نفاذ عن الحالة (أو ينتظر callback الذي حدّث الصف).\n2. `waiting` → يرجع `status=waiting` + `expires_in_seconds` (الفرونت يكمل الـ polling).\n3. `rejected` / `expired` / `failed` → يرجع الحالة + الرسالة؛ الفرونت يعرض «إعادة المحاولة» (يبدأ طلب جديد).\n4. `completed` → داخل transaction واحدة: ينشئ/يحدّث `User` من بيانات نفاذ **بما رجع فقط** (الجوال **من نفاذ** وهو الوحيد الإلزامي؛ `name`، `birth_date`، `gender`، `city_id` = مطابقة اسم مدينة نفاذ مع `cities` — تُحفظ لو رجعت، وإلا تبقى فارغة/الاسم الافتراضي «مستخدم نفاذ») + `nafath_verified_at` + **`consent_accepted_at` و`terms_accepted_at`** (المستخدم ضغط «تأكيد الربط» = موافقته على ربط بياناته، ويبقى العمودان السجل القانوني) + يُصدر التوكن.\n5. العمر < 18 من `birth_date` (إن رجع) → لا يُنشأ مستخدم، `status=underage` (`auth.underage`).\n6. مستخدم `is_blocked` → 403 `auth.account_blocked` (لا توكن).\n7. لم يرجع نفاذ جوالاً (ولا للمستخدم جوال) → `status=failed` (`failure_reason=phone_missing`).\n8. يرجع `UserResource` **والتوكن داخله** + `next_step`: `complete_info` لو الفصيلة **أو المدينة** فارغة، وإلا `null`. **لا يوجد `consent`.**\n9. الصف يُغلق (`completed_at`) — الـ polling بعدها على نفس id يرجع 404 (توكن يُصدر مرة واحدة).\n\n**Business rules / constraints:**\n- `is_complete_info` = blood_type ∧ city (الموافقة سُجّلت عند الاكتمال).\n- **الجوال من نفاذ** (لا يُرسل من العميل) - لا `phone_changed` بعد الآن.\n- **المهلة ~200 ث**: `expires_in_seconds` يُرجع مع `waiting`؛ بعد انتهائها يرجع `expired` (الشاشة تعرض «إعادة المحاولة» = بدء طلب جديد).\n- **طلب واحد نشط لكل هوية**: البدء مجدداً قبل انتهاء المهلة = 409 على `auth/nafath/register|login` (راجع خطتيهما).\n- **لا تفترض أي حقل**: الشاشة 3 تعرض name / city / birth_date إن كانت في `user` وتخفيها إن كانت `null`؛ المدينة الفارغة = حقل اختيار المدينة على الشاشة 3.\n\n**Fake driver (dev) — `NAFATH_APP_ID` empty:** the outcome of an **unregistered** national id is decided by its last digit:\n\n| Last digit | Outcome | Example national id |\n|---|---|---|\n| 9 | `rejected` | `1000000009` |\n| 8 | `expired` | `1000000008` |\n| 7 | `failed` (`nafath_error`) | `1000000007` |\n| 6 | `waiting` (keeps waiting) | `1000000006` |\n| 5 | completed but under 18 → `underage` | `1000000005` |\n| 0–4 | `completed` (new donor, `next_step=complete_info`) | `1000000001` |\n| second-to-last digit 9 | completed **without a city** (simulates \"Nafath returned no city\" → screen 3 asks for `city_id`) | `1000000091` |\n\n- A completed fake transaction returns a **realistic random profile**: Arabic full name (matching the gender), birth date (19–60 years) and a city drawn from the seeded active cities; `NAFATH_FAKE_NO_CITY=true` forces \"no city\" for every id.\n- An id that **already belongs to a donor ALWAYS completes**, whatever its last digit: the seeded main donor `1012345678` ends in 8 yet completes because it is registered — \"expired (id ending 8)\" only holds for an unregistered id.\n- `phone_taken`: a new id whose Nafath phone (`55` + digits 3–9 of the id) already belongs to another donor → `status=failed` (`failure_reason=phone_taken`), e.g. `1012345670` (its phone `551234567` is the seeded donor `1012345678`'s).\n- `NAFATH_FAKE_FAIL=true` → the start endpoints answer 503.\n\n**Status / state transitions:** `nafath_requests.status`: `waiting` → `completed | rejected | expired | failed` (+ computed `underage`).\n\n**Multi-step flow (3 شاشات):** الشاشة 1 `POST auth/nafath/register|login` ← **الشاشة 2 (هذا)** ← الشاشة 3 `POST auth/complete-info` (لو `next_step=complete_info`). لا خطوة موافقة منفصلة.\n\n**Side effects (Laravel-first):**\n- User created/updated (Observer generates nothing — `donor_code` is an accessor `DNR-<id 5>`).\n- Sanctum token created (`user_token`).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.nafath_completed` → ar «تم التحقق من هويتك بنجاح» / en \"Your identity has been verified\" (**exact design copy**).\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 200 | `status=waiting` | `auth.nafath_waiting` | جارٍ التحقق من الهوية | Verifying your identity |\n| 200 | `status=rejected` | `auth.nafath_rejected` | تم رفض طلب التحقق من تطبيق نفاذ | The verification request was rejected in Nafath |\n| 200 | `status=expired` (انتهت مهلة ~200 ث) | `auth.nafath_expired` | انتهت مهلة طلب التحقق، حاول مرة أخرى | The verification request expired, try again |\n| 200 | `status=failed` (Nafath error, fake digit 7) | `auth.nafath_failed` | تعذّر التحقق من الهوية، حاول مرة أخرى | We could not verify your identity, try again |\n| 200 | `status=failed` + Nafath returned no phone (`phone_missing`) | `auth.nafath_failed` | تعذّر التحقق من الهوية، حاول مرة أخرى | We could not verify your identity, try again |\n| 200 | `status=failed` + the Nafath phone belongs to another donor (`phone_taken`) | `auth.nafath_failed` | تعذّر التحقق من الهوية، حاول مرة أخرى | We could not verify your identity, try again |\n| 200 | `status=underage` | `auth.underage` | عذراً، التسجيل متاح لمن أتم 18 سنة فأكثر | Sorry, registration requires age 18 or above |\n| 403 | المستخدم محظور | `auth.account_blocked` | تم إيقاف حسابك، تواصل مع الدعم | Your account has been suspended, contact support |\n| 404 | id غير موجود / مكتمل سابقاً / من جهاز آخر | `messages.not_found` | العنصر غير موجود | Not found |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |"
                      },
                      "response": [
                        {
                          "name": "✅ 200 — completed (new user, Nafath city matched, next_step=complete_info)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم التحقق من هويتك بنجاح\",\n  \"data\": {\n    \"id\": 239,\n    \"name\": \"محمد صالح الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******30\",\n    \"country_code\": \"966\",\n    \"phone\": \"559876543\",\n    \"donor_code\": \"DNR-00239\",\n    \"blood_type\": null,\n    \"city\": {\n      \"id\": 45,\n      \"name\": \"أسوان\"\n    },\n    \"birth_date\": \"1978-02-02\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": false,\n    \"next_step\": \"complete_info\",\n    \"missing_fields\": [\n      \"image\",\n      \"blood_type\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "❌ 404 — already completed (token is issued once)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "✅ 200 — completed (Nafath returned no city: city=null, next_step=complete_info)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم التحقق من هويتك بنجاح\",\n  \"data\": {\n    \"id\": 240,\n    \"name\": \"عبدالله إبراهيم الشمري\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******91\",\n    \"country_code\": \"966\",\n    \"phone\": \"550000009\",\n    \"donor_code\": \"DNR-00240\",\n    \"blood_type\": null,\n    \"city\": null,\n    \"birth_date\": \"1995-09-16\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 0,\n    \"badge\": null,\n    \"active_status_text\": \"متبرع جديد\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": true,\n    \"is_complete_info\": false,\n    \"next_step\": \"complete_info\",\n    \"missing_fields\": [\n      \"image\",\n      \"blood_type\",\n      \"city_id\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — completed (registered donor, next_step=null)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم التحقق من هويتك بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"محمد أحمد القحطاني\",\n    \"image\": \"http://help.test/defaults/default.png\",\n    \"national_id_masked\": \"10******78\",\n    \"country_code\": \"966\",\n    \"phone\": \"551234567\",\n    \"donor_code\": \"DNR-00001\",\n    \"blood_type\": {\n      \"value\": \"O+\",\n      \"label\": \"O+\"\n    },\n    \"city\": {\n      \"id\": 1,\n      \"name\": \"الرياض\"\n    },\n    \"birth_date\": \"1995-05-15\",\n    \"gender\": {\n      \"value\": \"male\",\n      \"label\": \"ذكر\"\n    },\n    \"completed_donations_count\": 12,\n    \"badge\": {\n      \"value\": \"silver\",\n      \"label\": \"الوسام الفضي\",\n      \"color\": \"#667085\",\n      \"bg_color\": \"#F3F4F6\"\n    },\n    \"active_status_text\": \"متبرع نشط · ١٢ تبرع\",\n    \"next_eligible_at\": null,\n    \"next_eligible_text\": null,\n    \"days_until_eligible\": 0,\n    \"can_donate\": true,\n    \"permanently_deferred\": false,\n    \"nafath_verified\": true,\n    \"is_notify\": true,\n    \"lang\": \"ar\",\n    \"show_in_donor_lists\": false,\n    \"is_complete_info\": true,\n    \"next_step\": null,\n    \"missing_fields\": [\n      \"image\"\n    ],\n    \"action_buttons\": [\n      {\n        \"key\": \"book\",\n        \"label\": \"حجز موعد\",\n        \"method\": \"GET\",\n        \"endpoint\": \"booking/check\",\n        \"style\": \"primary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"donations\",\n        \"label\": \"سجل التبرعات\",\n        \"method\": \"GET\",\n        \"endpoint\": \"donations\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      },\n      {\n        \"key\": \"edit\",\n        \"label\": \"تعديل الملف\",\n        \"method\": \"POST\",\n        \"endpoint\": \"profile\",\n        \"style\": \"secondary\",\n        \"confirm\": false,\n        \"requires_reason\": false,\n        \"is_available\": true\n      }\n    ],\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — waiting (id ending 6 on the fake driver)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"جارٍ التحقق من الهوية\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"waiting\",\n      \"label\": \"بانتظار التأكيد\"\n    },\n    \"expires_in_seconds\": 199\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — rejected in the Nafath app (id ending 9)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم رفض طلب التحقق من تطبيق نفاذ\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"rejected\",\n      \"label\": \"مرفوض\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — expired (unregistered id ending 8; a registered id always completes)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"انتهت مهلة طلب التحقق، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"expired\",\n      \"label\": \"منتهي\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — underage (id ending 5)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"عذراً، التسجيل متاح لمن أتم 18 سنة فأكثر\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"underage\",\n      \"label\": \"أقل من 18 سنة\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — failed (id ending 7 on the fake driver)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تعذّر التحقق من الهوية، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"failed\",\n      \"label\": \"فشل\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — failed (phone_taken: the Nafath phone belongs to another donor)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تعذّر التحقق من الهوية، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"failed\",\n      \"label\": \"فشل\"\n    }\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — expired (the ~200 s window ended before Nafath answered)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"انتهت مهلة طلب التحقق، حاول مرة أخرى\",\n  \"data\": {\n    \"status\": {\n      \"value\": \"expired\",\n      \"label\": \"منتهي\"\n    }\n  }\n}"
                        },
                        {
                          "name": "❌ 403 — blocked account (after verification)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم إيقاف حسابك، تواصل مع الدعم\"\n}"
                        },
                        {
                          "name": "❌ 404 — unknown request id",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "Not Found",
                          "code": 404,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                        },
                        {
                          "name": "❌ 429 — too many polls (31st call within a minute, limit 30 per request id)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}auth/nafath/{id}/status",
                              "host": [
                                "{{base_url}}auth"
                              ],
                              "path": [
                                "nafath",
                                "{id}",
                                "status"
                              ],
                              "variable": [
                                {
                                  "key": "id",
                                  "value": "{{nafath_request_id}}",
                                  "description": "required · exists:nafath_requests,id · request_id من استجابة البدء · source: POST {{base_url}}auth/nafath/register|login → data.request_id"
                                }
                              ]
                            }
                          },
                          "status": "Too Many Requests",
                          "code": 429,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 59\n  }\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "provider",
              "description": "Flow `provider` — 3 endpoints (sprint 9). Each request carries Purpose · Screens (design + prototype) · Authentication · Parameters · Behaviour · Success · Errors, real examples from the seeded database and pm.* tests.",
              "item": [
                {
                  "name": "demo-provider-fill",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                          "pm.test(\"a count per section (appointments, donations, inventory, needs, appeals, offers, tickets, notifications)\", () => { const c = pm.response.json().data.created; pm.expect(c).to.have.property(\"appointments\"); pm.expect(c.appointments).to.be.a(\"number\"); pm.expect(c).to.have.property(\"donations\"); pm.expect(c.donations).to.be.a(\"number\"); pm.expect(c).to.have.property(\"inventory\"); pm.expect(c.inventory).to.be.a(\"number\"); pm.expect(c).to.have.property(\"needs\"); pm.expect(c.needs).to.be.a(\"number\"); pm.expect(c).to.have.property(\"appeals\"); pm.expect(c.appeals).to.be.a(\"number\"); pm.expect(c).to.have.property(\"offers\"); pm.expect(c.offers).to.be.a(\"number\"); pm.expect(c).to.have.property(\"tickets\"); pm.expect(c.tickets).to.be.a(\"number\"); pm.expect(c).to.have.property(\"notifications\"); pm.expect(c.notifications).to.be.a(\"number\"); });",
                          "pm.test(\"batch id\", () => pm.expect(pm.response.json().data.batch).to.match(/^demo-/));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}demo/provider/fill",
                      "host": [
                        "{{base_url}}demo"
                      ],
                      "path": [
                        "provider",
                        "fill"
                      ]
                    },
                    "description": "## Purpose\nملء بيانات تجريبية للوحة البنك.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. الـ owner يملأ **كل فروع جهته** أو `branch_id`؛ الموظف يملأ فرعه.\n2. الأقسام بالترتيب: appointments → donations → inventory → needs → appeals → offers → tickets → notifications.\n3. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n4. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n5. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n6. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n7. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n8. `offers`: عروض بكل حالات المسار + محادثة.\n9. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n10. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n11. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n12. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n13. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (branch_id) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|exists in scope · الفرع · source: GET {{base_url}}provider/lookups/branches"
                        },
                        {
                          "key": "count",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:20 · "
                        },
                        {
                          "key": "per_status",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:5 · "
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7,\n      \"donations\": 12,\n      \"inventory\": 24,\n      \"needs\": 6,\n      \"appeals\": 6,\n      \"offers\": 7,\n      \"tickets\": 4,\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001814\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7,\n      \"donations\": 12,\n      \"inventory\": 24,\n      \"needs\": 0,\n      \"appeals\": 6,\n      \"offers\": 0,\n      \"tickets\": 0,\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001822\"\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "0",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "9",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يجب أن تكون قيمة الحقل العدد مساوية أو أكبر لـ 1. (and 1 more error)\",\n  \"errors\": {\n    \"count\": [\n      \"يجب أن تكون قيمة الحقل العدد مساوية أو أكبر لـ 1.\"\n    ],\n    \"per_status\": [\n      \"لا يجب ان تكون قيمة حقل العدد لكل حالة اكبر من 5.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    },
                    {
                      "name": "✅ 200 — success: branch employee fills his own branch only",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7,\n      \"donations\": 12,\n      \"inventory\": 24,\n      \"needs\": 6,\n      \"appeals\": 6,\n      \"offers\": 7,\n      \"tickets\": 4,\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001848\"\n  }\n}"
                    },
                    {
                      "name": "⚠️ 422 — branch_id خارج نطاق الموظف",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill"
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "2",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"حقل المحدد الفرع غير صالح.\",\n  \"errors\": {\n    \"branch_id\": [\n      \"حقل المحدد الفرع غير صالح.\"\n    ]\n  }\n}"
                    }
                  ]
                },
                {
                  "name": "demo-provider-fill-section",
                  "event": [
                    {
                      "listen": "prerequest",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "{",
                          "try { const vars = pm.request.url.variables.toObject(); pm.request.url.path = pm.request.url.path.map((s) => { const m = /^[{]([A-Za-z0-9_]+)[}]$/.exec(s); return m ? String(vars[m[1]]) : s; }); } catch (e) {}",
                          "}"
                        ]
                      }
                    },
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"created\"); pm.expect(o).to.have.property(\"batch\"); });",
                          "pm.test(\"only the asked section\", () => pm.expect(Object.keys(pm.response.json().data.created)).to.have.length(1));"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}demo/provider/fill/{section}",
                      "host": [
                        "{{base_url}}demo"
                      ],
                      "path": [
                        "provider",
                        "fill",
                        "{section}"
                      ],
                      "variable": [
                        {
                          "key": "section",
                          "value": "inventory",
                          "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                        }
                      ]
                    },
                    "description": "## Purpose\nملء قسم محدد للوحة البنك.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Path params\n- `section` — required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · example: `inventory`\n\n### Body (form-data)\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n- `count` — optional · nullable|integer|min:1|max:20 ·  · example: `3`\n- `per_status` — optional · nullable|integer|min:1|max:5 ·  · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. `section` ∈ `appointments` · `donations` · `inventory` · `needs` · `appeals` · `offers` · `tickets` · `notifications`.\n2. `appointments`: حجوزات بكل الحالات (pending/confirmed/rejected/cancelled/expired/attended/no_show) مع **حجز قائم واحد** للمستخدم؛ التواريخ: الماضي للمنتهي، المستقبل للقائم.\n3. `donations`: تبرعات بكل مرحلة من السبع + موقوف (استبعاد/رفض) + مكتمل + مستخدم — مع `donation_stage_logs` متسلسلة زمنياً وحركات مخزون مطابقة.\n4. `inventory`: أرصدة لكل فصيلة×مكوّن + حركات (إضافة/صرف/تعديل) بحيث الرصيد = Σ الحركات + حدود المستويات.\n5. `needs`: احتياجات بكل الحالات (نشط/جزئي/مستوفى/تعذّر/ملغي) + واحد متأخر.\n6. `appeals`: نداءات بكل الحالات (+ استجابات = حجوزات مرتبطة من متبرعين تجريبيين، `confirmed_count` = المؤكد فعلاً).\n7. `offers`: عروض بكل حالات المسار + محادثة.\n8. `tickets`: تذاكر بكل الحالات + محادثة بمرفقات.\n9. `notifications`: إشعار من كل نوع يخص الجمهور (NotificationType) بالعربي والإنجليزي، بعضها مقروء.\n10. المتبرعون الجدد يُنشؤون بـ `is_demo=true` (أسماء عربية، فصائل متنوعة) → مستبعدون من الإحصائيات العامة وقوائم المتميزين/النادرة ويُحذفون بالتنظيف.\n11. كل السجلات المنشأة تُعلَّم في جدول تتبع/عمود `is_demo` أو عبر `demo_batch` في `meta` حتى يحذفها `DELETE` بدقة (لا تمس بيانات الـ seed الحقيقية).\n12. Idempotent-ish: التكرار يضيف دفعة جديدة؛ لا يكسر قاعدة «حجز قائم واحد» (يتخطى إنشاء قائم إن وُجد).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.filled` → ar «تم إنشاء البيانات التجريبية» / en \"Demo data created\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 404 | قسم غير معروف | `messages.not_found` | العنصر غير موجود | Not found |\n| 422 | فشل التحقق (count) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    },
                    "body": {
                      "mode": "formdata",
                      "formdata": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|exists in scope · الفرع"
                        },
                        {
                          "key": "count",
                          "value": "3",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:20 · "
                        },
                        {
                          "key": "per_status",
                          "value": "1",
                          "type": "text",
                          "description": "optional · nullable|integer|min:1|max:5 · "
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success: appointments (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001824\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: donations (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"donations\": 12\n    },\n    \"batch\": \"demo-20261019-001827\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: inventory (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"inventory\": 24\n    },\n    \"batch\": \"demo-20261019-001827\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: needs (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"needs\": 0\n    },\n    \"batch\": \"demo-20261019-001827\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: appeals (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"appeals\": 6\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: offers (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"offers\": 0\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: tickets (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"tickets\": 0\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success: notifications (ar)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم إنشاء البيانات التجريبية\",\n  \"data\": {\n    \"created\": {\n      \"notifications\": 16\n    },\n    \"batch\": \"demo-20261019-001830\"\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Demo data created\",\n  \"data\": {\n    \"created\": {\n      \"appointments\": 7\n    },\n    \"batch\": \"demo-20261019-001832\"\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 404 — قسم غير معروف",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "⚠️ 422 — فشل التحقق (count, per_status)",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "count",
                              "value": "99",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unprocessable Entity",
                      "code": 422,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\",\n  \"errors\": {\n    \"count\": [\n      \"لا يجب ان تكون قيمة حقل العدد اكبر من 20.\"\n    ]\n  }\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider/fill/{section}",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider",
                            "fill",
                            "{section}"
                          ],
                          "variable": [
                            {
                              "key": "section",
                              "value": "inventory",
                              "description": "required · in:appointments,donations,inventory,needs,appeals,offers,tickets,notifications · القسم · source: —"
                            }
                          ]
                        },
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "type": "text"
                            },
                            {
                              "key": "count",
                              "value": "3",
                              "type": "text"
                            },
                            {
                              "key": "per_status",
                              "value": "1",
                              "type": "text"
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "demo-provider-clear",
                  "event": [
                    {
                      "listen": "test",
                      "script": {
                        "type": "text/javascript",
                        "exec": [
                          "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                          "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                          "pm.test(\"summary\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"deleted\"); });",
                          "pm.test(\"a count per section (appointments, donations, inventory, needs, appeals, offers, tickets, notifications)\", () => { const c = pm.response.json().data.deleted; pm.expect(c).to.have.property(\"appointments\"); pm.expect(c.appointments).to.be.a(\"number\"); pm.expect(c).to.have.property(\"donations\"); pm.expect(c.donations).to.be.a(\"number\"); pm.expect(c).to.have.property(\"inventory\"); pm.expect(c.inventory).to.be.a(\"number\"); pm.expect(c).to.have.property(\"needs\"); pm.expect(c.needs).to.be.a(\"number\"); pm.expect(c).to.have.property(\"appeals\"); pm.expect(c.appeals).to.be.a(\"number\"); pm.expect(c).to.have.property(\"offers\"); pm.expect(c.offers).to.be.a(\"number\"); pm.expect(c).to.have.property(\"tickets\"); pm.expect(c.tickets).to.be.a(\"number\"); pm.expect(c).to.have.property(\"notifications\"); pm.expect(c.notifications).to.be.a(\"number\"); });"
                        ]
                      }
                    }
                  ],
                  "request": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Accept",
                        "value": "application/json",
                        "description": "required"
                      },
                      {
                        "key": "Accept-Language",
                        "value": "{{lang}}",
                        "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                      },
                      {
                        "key": "Authorization",
                        "value": "Bearer {{employee_token}}",
                        "description": "required · Sanctum token of the blood-bank employee"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}demo/provider",
                      "host": [
                        "{{base_url}}demo"
                      ],
                      "path": [
                        "provider"
                      ],
                      "query": [
                        {
                          "key": "branch_id",
                          "value": "1",
                          "description": "optional · nullable|exists in scope · الفرع",
                          "disabled": true
                        }
                      ]
                    },
                    "description": "## Purpose\nتنظيف بيانات البنك التجريبية.\n\n## Screens\nلا شاشة لها في التصميم — أداة اختبار/تطوير فقط (تعمل مع `DEMO_DATA_ENABLED=true` ولا يستدعيها المستخدم النهائي). ملف التصميم: [Figma](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=418-2722&m=dev)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` + `demo.enabled`\n- Middleware: `api.lang` · `demo.enabled` · `throttle:demo` · `auth:employee` · `employee.active`\n- Rate limit: throttle:demo (60/min per account)\n\n## Parameters & fields\n### Query params\n- `branch_id` — optional · nullable|exists in scope · الفرع · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. يحذف دفعات demo لنطاق الموظف (فرعه أو كل فروع جهته للـ owner) + المتبرعين التجريبيين، ويعيد حساب الأرصدة والعدّادات.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n> Postman / run notes: `count` and `per_status` are validated and handed to the sections, but every section builds one fixed set that covers all statuses (the volume does not multiply) · repeating a fill is safe: what must stay unique (the donor live booking, the demo complaints / needs / offers / tickets) is skipped · the `donations` section adds COMPLETED donations: the donor then sits in the waiting period and `POST appointments` answers 409 `booking.waiting_period` until `DELETE demo/user` (run the booking flow first, or clean up) · `DELETE` removes only demo rows and recomputes stock, appeal counters and the demo donors · the route group is throttled to 60/min per account (not 10) because the collection helper folders call it in sequence.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/demo.cleared` → ar «تم حذف البيانات التجريبية» / en \"Demo data removed\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 404 | `DEMO_DATA_ENABLED=false` (الإنتاج) | `messages.not_found` | العنصر غير موجود | Not found |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |",
                    "auth": {
                      "type": "bearer",
                      "bearer": [
                        {
                          "key": "token",
                          "value": "{{employee_token}}",
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "response": [
                    {
                      "name": "✅ 200 — success (ar)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider?branch_id=1",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"تم حذف البيانات التجريبية\",\n  \"data\": {\n    \"deleted\": {\n      \"appointments\": 28,\n      \"donations\": 36,\n      \"inventory\": 72,\n      \"needs\": 6,\n      \"appeals\": 18,\n      \"offers\": 7,\n      \"tickets\": 4,\n      \"notifications\": 48\n    }\n  }\n}"
                    },
                    {
                      "name": "✅ 200 — success (en)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider?branch_id=1",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "OK",
                      "code": 200,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"Demo data removed\",\n  \"data\": {\n    \"deleted\": {\n      \"appointments\": 7,\n      \"donations\": 12,\n      \"inventory\": 24,\n      \"needs\": 6,\n      \"appeals\": 6,\n      \"offers\": 7,\n      \"tickets\": 4,\n      \"notifications\": 16\n    }\n  }\n}"
                    },
                    {
                      "name": "❌ 404 — DEMO_DATA_ENABLED=false (الإنتاج)",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Not Found",
                      "code": 404,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"العنصر غير موجود\"\n}"
                    },
                    {
                      "name": "❌ 401 — بدون توكن / توكن منتهي",
                      "originalRequest": {
                        "method": "DELETE",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}demo/provider",
                          "host": [
                            "{{base_url}}demo"
                          ],
                          "path": [
                            "provider"
                          ],
                          "query": [
                            {
                              "key": "branch_id",
                              "value": "1",
                              "description": "optional · nullable|exists in scope · الفرع",
                              "disabled": true
                            }
                          ]
                        }
                      },
                      "status": "Unauthorized",
                      "code": 401,
                      "_postman_previewlanguage": "json",
                      "header": [
                        {
                          "key": "Content-Type",
                          "value": "application/json"
                        }
                      ],
                      "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                    }
                  ]
                },
                {
                  "name": "✅ Helper lists & pages",
                  "description": "كل ما يحتاجه flow `provider` بجانبه: مصادر الـ ids والصفحات الثابتة — مكررة هنا عمداً. كل وصف يبدأ بـ «مصدر <key>».",
                  "item": [
                    {
                      "name": "provider/auth/login",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.collectionVariables.set(\"employee_token\", pm.response.json().data.token);",
                              "pm.test(\"payload keys\", () => { const o = pm.response.json().data; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"employee_no\"); pm.expect(o).to.have.property(\"name\"); pm.expect(o).to.have.property(\"job_title\"); pm.expect(o).to.have.property(\"country_code\"); pm.expect(o).to.have.property(\"phone\"); pm.expect(o).to.have.property(\"email\"); pm.expect(o).to.have.property(\"avatar\"); pm.expect(o).to.have.property(\"is_owner\"); pm.expect(o).to.have.property(\"status\"); pm.expect(o).to.have.property(\"joined_at\"); pm.expect(o).to.have.property(\"organization\"); pm.expect(o).to.have.property(\"branch\"); pm.expect(o).to.have.property(\"permissions\"); pm.expect(o).to.have.property(\"lang\"); pm.expect(o).to.have.property(\"token\"); });",
                              "{ const v = pm.response.json().data.token; if (v !== undefined && v !== null) { pm.collectionVariables.set(\"employee_token\", v); pm.environment.set(\"employee_token\", v); } }"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "POST",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/auth/login",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "auth",
                            "login"
                          ]
                        },
                        "description": "## Purpose\nمصدر `{{employee_token}}` (يُحفظ تلقائياً بعد تسجيل الدخول) — دخول موظف البنك بالجوال وكلمة المرور.\n\n## Screens\n- P1 Sign In — provider (web) `229:32997`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=229-32997&scaling=scale-down&content-scaling=fixed)\n- G-P12 نسيت كلمة المرور (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nعام — بلا توكن. public (بدون توكن)\n- Middleware: `api.lang`\n- Rate limit: base login throttle (`LoginRateLimiter` — 5 محاولات/دقيقة لكل جوال+IP → 429 `retry_after_seconds`)\n\n## Parameters & fields\n### Body (form-data)\n- `country_code` — required · required|exists:countries,code · مفتاح الدولة · example: `966`\n- `phone` — required · required|PhoneNormalizer · الجوال (C3) · example: `0501234567`\n- `password` — required · required|string · كلمة المرور · example: `password`\n\n\n## Behaviour notes\n**Steps:**\n1. C3: الدخول **بالجوال + كلمة المرور** (ليس رقم الموظف).\n2. يبحث عن `Employee` بالجوال المطبّع (non-deleted) → `Hash::check`.\n3. يتحقق: الموظف نشط · فرعه نشط (لغير الـ owner) · جهته نشطة — وإلا 403 بالسبب.\n4. يصدر توكن Sanctum على guard `employee`، يحدّث `last_login_at`، ويرجع `EmployeeResource` **والتوكن داخله** + `permissions[]` (owner = كل الأقسام).\n\n**Business rules / constraints:**\n- تعطيل الموظف/الفرع/الجهة يحذف التوكنات فوراً (لا انتظار لانتهاء الجلسة).\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- Laravel `Login`/`Failed`/`Lockout` events (guard `employee`).\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/auth.logged_in_successfully` → ar «تم تسجيل الدخول بنجاح» / en \"Logged in successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (phone, password) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | جوال/كلمة مرور خاطئة | `auth.invalid_credentials` | بيانات الدخول غير صحيحة | Invalid credentials |\n| 403 | الموظف معطّل | `employee.inactive` | حسابك معطّل | Your account is disabled |\n| 403 | الفرع معطّل | `employee.branch_inactive` | الفرع التابع له حسابك معطّل | Your branch is disabled |\n| 403 | الجهة معطّلة | `employee.organization_inactive` | الجهة معطّلة | Your organization is disabled |\n| 429 | تجاوز حد الطلبات → `data.retry_after_seconds` | `messages.throttled` | محاولات كثيرة، حاول بعد قليل | Too many attempts |",
                        "body": {
                          "mode": "formdata",
                          "formdata": [
                            {
                              "key": "country_code",
                              "value": "966",
                              "type": "text",
                              "description": "required · required|exists:countries,code · مفتاح الدولة"
                            },
                            {
                              "key": "phone",
                              "value": "0501234567",
                              "type": "text",
                              "description": "required · required|PhoneNormalizer · الجوال (C3)"
                            },
                            {
                              "key": "password",
                              "value": "password",
                              "type": "text",
                              "description": "required · required|string · كلمة المرور"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — success (ar)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0501234567",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم تسجيل الدخول بنجاح\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"النداءات\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"متابعة التبرعات\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"المخزون\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"إجمالي الاحتياج\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"التواصل مع الإدارة\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"بيانات الجهة\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"إدارة الفروع\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"الموظفون\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — success (en)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0501234567",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Logged in successfully\",\n  \"data\": {\n    \"id\": 1,\n    \"employee_no\": \"EMP-00001\",\n    \"name\": \"أحمد محمد العمري\",\n    \"job_title\": \"منسق بنك الدم\",\n    \"country_code\": \"966\",\n    \"phone\": \"501234567\",\n    \"email\": \"a.alomari@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/1.png\",\n    \"is_owner\": true,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"Active\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-01\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"King Faisal Specialist Hospital & Research Centre\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": null,\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"Home\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"Appointments & bookings\"\n      },\n      {\n        \"value\": \"appeals\",\n        \"label\": \"Appeals\"\n      },\n      {\n        \"value\": \"donations\",\n        \"label\": \"Donation tracking\"\n      },\n      {\n        \"value\": \"inventory\",\n        \"label\": \"Inventory\"\n      },\n      {\n        \"value\": \"needs\",\n        \"label\": \"Blood needs\"\n      },\n      {\n        \"value\": \"contact_admin\",\n        \"label\": \"Contact admin\"\n      },\n      {\n        \"value\": \"organization\",\n        \"label\": \"Organization data\"\n      },\n      {\n        \"value\": \"branches\",\n        \"label\": \"Branch management\"\n      },\n      {\n        \"value\": \"employees\",\n        \"label\": \"Employees\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee (appointments + home only)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "502000002",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم تسجيل الدخول بنجاح\",\n  \"data\": {\n    \"id\": 2,\n    \"employee_no\": \"EMP-00002\",\n    \"name\": \"أحمد محمد العتيبي\",\n    \"job_title\": \"موظف استقبال\",\n    \"country_code\": \"966\",\n    \"phone\": \"502000002\",\n    \"email\": \"a.alotaibi@kfshrc.edu.sa\",\n    \"avatar\": \"http://help.test/uploads/employees/2.png\",\n    \"is_owner\": false,\n    \"status\": {\n      \"value\": \"active\",\n      \"label\": \"نشط\",\n      \"color\": \"#059669\",\n      \"bg_color\": \"#ECFDF5\"\n    },\n    \"joined_at\": \"2021-03-08\",\n    \"organization\": {\n      \"id\": 1,\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث\",\n      \"logo\": \"http://help.test/uploads/organizations/1.png\"\n    },\n    \"branch\": {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"فرع جدة\"\n    },\n    \"permissions\": [\n      {\n        \"value\": \"home\",\n        \"label\": \"الرئيسية\"\n      },\n      {\n        \"value\": \"appointments\",\n        \"label\": \"المواعيد والحجوزات\"\n      }\n    ],\n    \"lang\": \"ar\",\n    \"token\": \"12|f3Qx…\"\n  }\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (phone, password)",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": []
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"الحقل رمز الدولة مطلوب. (and 2 more errors)\",\n  \"errors\": {\n    \"country_code\": [\n      \"الحقل رمز الدولة مطلوب.\"\n    ],\n    \"phone\": [\n      \"الحقل الهاتف مطلوب.\"\n    ],\n    \"password\": [\n      \"الحقل كلمة المرور مطلوب.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — جوال/كلمة مرور خاطئة",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0501234567",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "wrong-password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"بيانات الدخول غير صحيحة\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف معطّل",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0502000004",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "password",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        },
                        {
                          "name": "❌ 429 — تجاوز حد الطلبات",
                          "originalRequest": {
                            "method": "POST",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/auth/login",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "auth",
                                "login"
                              ]
                            },
                            "body": {
                              "mode": "formdata",
                              "formdata": [
                                {
                                  "key": "country_code",
                                  "value": "966",
                                  "type": "text"
                                },
                                {
                                  "key": "phone",
                                  "value": "0599000111",
                                  "type": "text"
                                },
                                {
                                  "key": "password",
                                  "value": "x",
                                  "type": "text"
                                }
                              ]
                            }
                          },
                          "status": "Too Many Requests",
                          "code": 429,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"محاولات كثيرة، حاول بعد قليل\",\n  \"data\": {\n    \"retry_after_seconds\": 60\n  }\n}"
                        }
                      ]
                    },
                    {
                      "name": "provider/lookups/branches",
                      "event": [
                        {
                          "listen": "test",
                          "script": {
                            "type": "text/javascript",
                            "exec": [
                              "pm.test(\"status 200\", () => pm.response.to.have.status(200));",
                              "pm.test(\"envelope\", () => { const b = pm.response.json(); pm.expect(b).to.have.property(\"message\"); pm.expect(b).to.have.property(\"data\"); });",
                              "pm.test(\"list items\", () => { const l = pm.response.json().data; pm.expect(l).to.be.an(\"array\"); if (l.length) { const o = l[0]; pm.expect(o).to.have.property(\"id\"); pm.expect(o).to.have.property(\"name\"); } });"
                            ]
                          }
                        }
                      ],
                      "request": {
                        "method": "GET",
                        "header": [
                          {
                            "key": "Accept",
                            "value": "application/json",
                            "description": "required"
                          },
                          {
                            "key": "Accept-Language",
                            "value": "{{lang}}",
                            "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                          },
                          {
                            "key": "Authorization",
                            "value": "Bearer {{employee_token}}",
                            "description": "required · Sanctum token of the blood-bank employee"
                          }
                        ],
                        "url": {
                          "raw": "{{base_url}}provider/lookups/branches",
                          "host": [
                            "{{base_url}}provider"
                          ],
                          "path": [
                            "lookups",
                            "branches"
                          ],
                          "query": [
                            {
                              "key": "include_all",
                              "value": "1",
                              "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                              "disabled": true
                            },
                            {
                              "key": "active",
                              "value": "1",
                              "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                              "disabled": true
                            }
                          ]
                        },
                        "description": "## Purpose\nمصدر `branch_id` (فروعي — الحساب الرئيسي: كل فروع الجهة) — مصدر `branch_id` في كل فورم/فلتر للوحة البنك.\n\n## Screens\n- P85 Select Branch (dropdown) «جميع الفروع» — provider (web) `2095:31116`: [design](https://www.figma.com/design/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&m=dev) · [proto](https://www.figma.com/proto/61n7mbtEymKao8siGCwGrT/%D8%A3%D9%86%D9%82%D8%B0%D9%86%D9%8A?node-id=2095-31116&scaling=scale-down&content-scaling=fixed)\n- G-P11 حقل/فلتر «الفرع» للحساب الرئيسي (gap) — (gap — not in Figma; spec in `frontend-design-gaps.md`)\n\n## Authentication\nBearer `{{employee_token}}` (Sanctum). `auth:employee` (Sanctum guard `employee`)\n- Middleware: `api.lang` · `auth:employee` · `employee.active`\n\n## Parameters & fields\n### Query params\n- `include_all` — optional · nullable|boolean · إضافة «جميع الفروع» · example: `1`\n- `active` — optional · nullable|boolean · النشطة فقط (للفورمات) · example: `1`\n\n\n## Behaviour notes\n**Steps:**\n1. owner → كل فروع جهته (نشطة وغير نشطة مع `status`)؛ موظف الفرع → فرعه فقط.\n2. `include_all=1` يضيف خيار «جميع الفروع» (`id: null`) لفلاتر الـ owner.\n\n**Status / state transitions:** none (read-only).\n\n**Side effects (Laravel-first):**\n- none.\n\n## Success\n`200` via `respondWithSuccess(msg, data)` — message key `api/messages.fetched` → ar «تم جلب البيانات بنجاح» / en \"Data fetched successfully\".\n\n## Errors\n| HTTP | When | Message key | ar | en |\n|---|---|---|---|---|\n| 422 | فشل التحقق (include_all) | `validation.*` | رسائل `lang/ar/validation.php` + `attributes` | messages from `lang/en/validation.php` |\n| 401 | بدون توكن / توكن منتهي | `auth.unauthenticated` | يرجى تسجيل الدخول | Unauthenticated |\n| 403 | الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل) | `employee.inactive | branch_inactive | organization_inactive` | حسابك معطّل / الفرع التابع له حسابك معطّل / الجهة معطّلة | Your account / branch / organization is disabled |",
                        "auth": {
                          "type": "bearer",
                          "bearer": [
                            {
                              "key": "token",
                              "value": "{{employee_token}}",
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "response": [
                        {
                          "name": "✅ 200 — owner: كل الفروع مع «جميع الفروع»",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": null,\n      \"name\": \"جميع الفروع\"\n    },\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — الفرع الرئيسي - الرياض\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع الدمام\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 4,\n      \"code\": \"BR-004\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع مكة المكرمة\",\n      \"status\": {\n        \"value\": \"inactive\",\n        \"label\": \"غير نشط\",\n        \"color\": \"#DC2626\",\n        \"bg_color\": \"#FEF2F2\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — owner: النشطة فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?active=1",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"Data fetched successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"BR-001\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Main Branch - Riyadh\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Jeddah Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    },\n    {\n      \"id\": 3,\n      \"code\": \"BR-003\",\n      \"name\": \"King Faisal Specialist Hospital & Research Centre — Dammam Branch\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"Active\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "✅ 200 — branch employee: فرعه فقط",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "OK",
                          "code": 200,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"تم جلب البيانات بنجاح\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"code\": \"BR-002\",\n      \"name\": \"مستشفى الملك فيصل التخصصي ومركز الأبحاث — فرع جدة\",\n      \"status\": {\n        \"value\": \"active\",\n        \"label\": \"نشط\",\n        \"color\": \"#059669\",\n        \"bg_color\": \"#ECFDF5\"\n      }\n    }\n  ]\n}"
                        },
                        {
                          "name": "⚠️ 422 — فشل التحقق (include_all)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches?include_all=maybe",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unprocessable Entity",
                          "code": 422,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\",\n  \"errors\": {\n    \"include_all\": [\n      \"يجب أن تكون قيمة حقل إضافة جميع الفروع إما صحيحة أو خاطئة.\"\n    ]\n  }\n}"
                        },
                        {
                          "name": "❌ 401 — بدون توكن / توكن منتهي",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Unauthorized",
                          "code": 401,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"يرجى تسجيل الدخول\"\n}"
                        },
                        {
                          "name": "❌ 403 — الموظف/فرعه/جهته معطّل (التوكن يُحذف عند التعطيل)",
                          "originalRequest": {
                            "method": "GET",
                            "header": [
                              {
                                "key": "Accept",
                                "value": "application/json",
                                "description": "required"
                              },
                              {
                                "key": "Accept-Language",
                                "value": "{{lang}}",
                                "description": "optional · ar|en · default ar (the language of the messages and of every translated label)"
                              },
                              {
                                "key": "Authorization",
                                "value": "Bearer {{employee_token}}",
                                "description": "required · Sanctum token of the blood-bank employee"
                              }
                            ],
                            "url": {
                              "raw": "{{base_url}}provider/lookups/branches",
                              "host": [
                                "{{base_url}}provider"
                              ],
                              "path": [
                                "lookups",
                                "branches"
                              ],
                              "query": [
                                {
                                  "key": "include_all",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · إضافة «جميع الفروع»",
                                  "disabled": true
                                },
                                {
                                  "key": "active",
                                  "value": "1",
                                  "description": "optional · nullable|boolean · النشطة فقط (للفورمات)",
                                  "disabled": true
                                }
                              ]
                            }
                          },
                          "status": "Forbidden",
                          "code": 403,
                          "_postman_previewlanguage": "json",
                          "header": [
                            {
                              "key": "Content-Type",
                              "value": "application/json"
                            }
                          ],
                          "body": "{\n  \"message\": \"حسابك معطّل\"\n}"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "pm.request.headers.upsert({ key: \"Accept\", value: \"application/json\" });",
          "pm.request.headers.upsert({ key: \"Accept-Language\", value: pm.collectionVariables.get(\"lang\") || \"ar\" });",
          "for (let n = -30; n <= 120; n++) pm.variables.set(n < 0 ? \"dm\" + (-n) : \"d\" + n, new Date(Date.now() + n * 864e5).toISOString().slice(0, 10));"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "http://127.0.0.1:8000/api/v1/",
      "description": "Base URL — trailing slash"
    },
    {
      "key": "lang",
      "value": "ar",
      "description": "ar | en → Accept-Language"
    },
    {
      "key": "user_token",
      "value": "",
      "description": "User (donor) Sanctum token — set by auth/nafath/{id}/status (completed)"
    },
    {
      "key": "temp-token",
      "value": "",
      "description": "Employee temp token (ability forget-password) — set by provider/auth/forgot-password/verify-code"
    },
    {
      "key": "employee_token",
      "value": "",
      "description": "Employee (provider panel) token — set by provider/auth/login"
    },
    {
      "key": "nafath_request_id",
      "value": "",
      "description": "Set by auth/nafath/register|login (data.request_id) - polled by auth/nafath/{id}/status"
    },
    {
      "key": "device_id",
      "value": "a1b2c3d4-iphone15",
      "description": "Set by POST devices (data.device_id) - used by PUT|DELETE devices/{id}"
    },
    {
      "key": "notification_id",
      "value": "",
      "description": "Set by GET notifications (first item id) - used by notifications/{id}/read and DELETE notifications/{id}"
    },
    {
      "key": "eligibility_assessment_id",
      "value": "",
      "description": "Set by POST eligibility/assessments (data.assessment_id) - sent as eligibility_assessment_id by POST appointments"
    },
    {
      "key": "appointment_id",
      "value": "",
      "description": "Set by POST appointments / GET appointments (data.id) - used by appointments/{id}[/cancel|/reschedule]"
    },
    {
      "key": "provider_appointment_id",
      "value": "",
      "description": "Set by GET provider/appointments (first item id) - used by provider/appointments/{id}[/confirm|/reject|/check-in|/no-show]"
    },
    {
      "key": "stock_before",
      "value": "",
      "description": "Set by the pre-request of provider/donations/{id}/advance - the bags of the unit blood type before the click (the test proves +1 when the journey closes)"
    },
    {
      "key": "provider_donation_id",
      "value": "",
      "description": "Set by GET provider/donations (first item id) - used by provider/donations/{id}[/advance|/stop|/record-usage]"
    },
    {
      "key": "donation_id",
      "value": "",
      "description": "Set by GET donations (first record_type=donation) - used by donations/{id}[/tracking]"
    },
    {
      "key": "donation_appointment_id",
      "value": "",
      "description": "Set by GET donations (first record_type=appointment) - used by donations/{id}?record_type=appointment"
    },
    {
      "key": "provider_appeal_id",
      "value": "",
      "description": "Set by GET|POST provider/appeals (first active item / the created appeal) - used by provider/appeals/{id}[/responses|/pause|/resume|/close]"
    },
    {
      "key": "appeal_id",
      "value": "",
      "description": "Set by GET appeals (first item id) - used by appeals/{id}[/response-check]"
    },
    {
      "key": "my_appeal_id",
      "value": "",
      "description": "Set by GET|POST my-appeals (first under-review item / the created request) - used by my-appeals/{id}[/close]"
    },
    {
      "key": "provider_need_id",
      "value": "",
      "description": "Set by GET|POST provider/needs (first editable item / the created need) - used by provider/needs/{id}[/cancel]"
    },
    {
      "key": "complaint_id",
      "value": "",
      "description": "Set by GET|POST complaints (first item / the sent complaint) - used by complaints/{id}"
    },
    {
      "key": "provider_ticket_id",
      "value": "",
      "description": "Set by GET|POST provider/tickets (first item / the opened ticket) - used by provider/tickets/{id}[/messages]"
    },
    {
      "key": "provider_offer_id",
      "value": "",
      "description": "Set by GET|POST provider/offers (first under-review item / the sent offer) - used by provider/offers/{id}[/cancel|/messages]"
    },
    {
      "key": "provider_employee_id",
      "value": "",
      "description": "Set by POST provider/employees (data.id) - used by the show / update / toggle-status / destroy steps of the same run"
    },
    {
      "key": "provider_branch_id",
      "value": "",
      "description": "Set by POST provider/branches (data.id) - the branch the rest of the branches folder works on (destroy removes it at the end)"
    },
    {
      "key": "provider_closure_id",
      "value": "",
      "description": "Set by POST provider/branches/{id}/closures (data.id) - used by DELETE .../closures/{closure_id}"
    },
    {
      "key": "emp_phone",
      "value": "",
      "description": "Set by the pre-request of POST provider/employees - a random phone so the request can run again"
    },
    {
      "key": "emp_email",
      "value": "",
      "description": "Set by the pre-request of POST provider/employees - a random e-mail so the request can run again"
    },
    {
      "key": "nafath_register_request_id",
      "value": "",
      "description": "Set by auth/nafath/register (data.request_id) - kept apart so the run token stays the seeded donor"
    },
    {
      "key": "branch_id",
      "value": "",
      "description": "Set by GET branches (first item id) - used by branches/{id}"
    },
    {
      "key": "booking_date",
      "value": "",
      "description": "Set by the pre-request of POST appointments / appointments/{id}/reschedule (first free bookable day of the branch) - the date field of both"
    },
    {
      "key": "booking_start",
      "value": "",
      "description": "Set by the pre-request of POST appointments (first free slot start_time, H:i) - the start_time field"
    },
    {
      "key": "reschedule_start",
      "value": "",
      "description": "Set by the pre-request of POST appointments/{id}/reschedule (second free slot of the booking branch, H:i) - the start_time field"
    }
  ]
}
